차밍이
[NumPy] 넘파이 기초 공부하기 #1 np.array, ndim, shape, dtype 본문
넘파이 기본 내용
넘파이(NumPy)의 주요 대상은 동종의 다차원 배열입니다. 즉 넘파이의 각 요소들은 같은 데이터 타입을 가지고 있으며, 여러 차원의 배열 형태로 데이터를 가지고 있습니다.
Python에서 넘파이를 사용하기 위해서는 넘파이 라이브러리를 불러오는 것으로 사용할 수 있습니다.
# Numpy 넘파이 라이브러리 불러오기
import numpy as np
numpy 라이브러리에 있는 모든 함수를 사용할 때, 계속해서 numpy를 모두 써주면 귀찮기 때문에 as np
를 붙여서 간단하게 줄여서 np
만을 써서 numpy
를 대신하는 것입니다.
배열 선언
a = [1,2,3,4,5] # List
type(a)
>>> list
b = np.array([1,2,3,4,5]) # Array
type(b)
>>> numpy.ndarray
c = np.array(1,2,3,4,5) # X 옳지 않은 방법
>>> ValueError
List와 Array는 다르다는 것을 이전에 설명하였습니다.
numpy를 통해서 배열을 선언하기 위해서는 np.array()
를 사용해서 선언할 수 있습니다.
c의 경우 에러가 발생합니다. 배열을 선언할 때에는 꼭 대괄호 [ ]
를 사용해야 합니다.
2020/01/22 - [파이썬] - [NumPy] 넘파이란? List와 Array의 차이점, 넘파이 계산이 빠른 이유
배열의 차원
넘파이의 각 차원은 axes(축)으로 불립니다.
np.array([1,2,3,4,5])
>>> array([1, 2, 3, 4, 5])
위 배열은 1차원 배열이며 1차원 배열의 길이는 5입니다.
np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>> array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]])
위 배열은 2차원 배열입니다. 첫 번째 차원은 [1,2,3,4,5]
으로 길이가 5 입니다.
두 번째 차원은 [6,7,8,9,10]
으로 구성되어 있으며 길이가 5 입니다.
여기에 계속해서 차원을 추가해나갈 수 있겠지요?
따라서 1, 2, 3, ... n 개의 차원으로 계속해서 많은 차원의 배열을 선언할 수 있습니다.
나중에 딥러닝/머신러닝을 진행하면 각 차원이 너무 많아져서 계산이 느려지는 문제를 직면하게 됩니다.
넘파이 객체
넘파이의 class는 ndarray이며 일반적으로는 그냥 array 또는 배열이라고 얘기합니다.
ndarray 객체의 속성은 다음과 같습니다.
- ndarray.ndim
배열의 차원 수 or 배열의 축 수 b = np.array([1,2,3,4,5]) b.ndim >>> 1 c = np.array([[ 1., 0., 0.], [ 0., 1., 2.]]) c.ndim >>> 2
- ndarray.shape
배열 각 차원의 크기를 튜플 형태로 표현합니다. n행과 m열의 행렬의 경우 (n,m) 형태의 튜플로 나타냅니다.배열 b는 1차원 길이가 5인 배열이므로 shape를 보면(5, )
입니다.배열 d는 각 차원의 길이가 3인 배열이므로(4, 3)
입니다. 4행 3열로 이루어진 배열이라고 할 수 있습니다. - 어떤 느낌인지 아시겠죠~
- 배열 c는 2차원이며 각 차원의 길이가 3인 배열이므로
(2, 3)
입니다. 2행 3열로 이루어졌다고 볼 수 있습니다. b = np.array([1,2,3,4,5]) c = np.array([[ 1., 0., 0.], [ 0., 1., 2.]]) d = np.array([[ 1., 0., 0.], [ 0., 1., 2.], [ 3., 4., 7.], [ 3., 0., 1.]]) b.shape >>> (5,) c.shape >>> (2,3) d.shape >>> (4,3)
- nparray.dtype
배열 b는 정수형 요소들로 이루어져 있으므로 data의 type은b = np.array([1, 2, 3, 4, 5]) c = np.array([[ 1., 0., 0.], [ 0., 1., 2.]]) b.dtype >>> dtype('int32') c.dtype >> dtype('float64')
int32
으로 출력됩니다. - 배열 c는 실수형 데이터 타입으로 이루어져 있어 data의 type은
float64
으로 출력됩니다. - 배열의 원소의 종류를 알 수 있습니다. 기본적으로 넘파이의 원소들은 모두 같은 데이터 타입을 가지고 있습니다. numpy.int32, numpy.int16, numpy.float64등이 있습니다.
ndarray.itemsize와 ndarray.data는 좀 더 복잡하고 어려운 내용이므로 가볍게 읽어만 보셔도 충분할 것 같습니다.
- ndarray.itemsize.
배열의 각 요소의 바이트 단위로 크기를 알 수 있습니다. 예를 들어 float64 형식의 요소 배열은 8(=64/8)의 항목 크기를 가지며, complex32 형식 중 하나는 4(=32/8)의 항목 크기를 가진다. 이것은 ndarray.dtype.itemsize와 같다. - ndarray.data.
배열의 데이터가 메모리의 어느 위치에 저장되어있는지 알려줍니다. 저장된 메모리의 위치를 반환합니다.
지금까지 NumPy 넘파이의 아주 기초적인 내용들을 알아보았습니다.
다음번에는 numpy의 함수들에 대해서 알아보도록 하겠습니다.
'파이썬 > 기본 문법 정리' 카테고리의 다른 글
[파이썬] 함수에 입력 변수 여러개 받기 - 매개변수 (0) | 2021.05.28 |
---|---|
[NumPy] 넘파이 기초 공부하기 #2 np.vstack, hstack, fromfunction (0) | 2021.05.27 |
[파이썬] zip 내장함수 - 묶어서 데이터 가져오기 (0) | 2021.05.26 |
[파이썬] 리스트 인덱스와 값 같이 가져오기 : 내장함수 - enumerate (0) | 2021.05.26 |
객체 지향 프로그래밍 : 객체와 메서드를 통해 알아보자 (0) | 2020.01.29 |
Seaborn(SNS)를 사용한 파이썬 데이터 시각화 기초 matplotlib (0) | 2020.01.28 |
[NumPy] 넘파이란? List와 Array의 차이점, 넘파이 계산이 빠른이유 (0) | 2020.01.22 |
[Python] pass, continue, break 차이점 알아보기 (3) | 2020.01.19 |