Python Numpy 강좌 : 제 2강 - 배열 생성 (2)
1차원 배열
import numpy as np
a = np.array([1, 2, 3], dtype=int)
b = np.array([1.1, 2.2, 3.3], dtype=float)
c = np.array([1, 1, 0], dtype=bool)
print(a)
print(b)
print(c)
print(a.dtype)- 결과
- [1 2 3]
[1.1 2.2 3.3]
[ True True False]
int64
numpy.array(배열, dtype=자료형)을 사용하여 배열 생성과 자료형을 설정할 수 있습니다.
dtype이 생략될 경우, 데이터의 자료형을 유추하여 자동적으로 dtype을 할당합니다.
bool형식의 특정한 배열을 생성시 dtype을 사용하여 명시적으로 표기합니다. 0은 False로, 0이 아닌 값은 True로 변환됩니다.
-
Tip :
dtype을 생략한 정수 배열의 기본 자료형은int64입니다. NumPy 1.x 버전의 Windows 환경에서는int32가 기본값이었으나, NumPy 2.0부터는 Windows에서도int64가 기본값입니다. -
Tip :
int,float,bool처럼 파이썬 기본 자료형 대신np.int32,np.float32,np.uint8처럼 비트 수를 지정한 자료형을 사용할 수도 있습니다. 단,np.int,np.float같은 별칭은 NumPy 1.24에서 제거되었으므로 사용하지 않습니다.
다차원 배열
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]])
print(a)
print(b)
print(a[0][1])
print(b[0][1][1])- 결과
- [[1 2 3]
[4 5 6]
[7 8 9]]
[[[ 1 2]
[ 3 4]]
[[ 5 6]
[ 7 8]]
[[ 9 10]
[11 12]]]
2
4
numpy.array(다차원 배열, dtype=자료형)을 사용하여 다차원 배열 생성과 자료형을 설정할 수 있습니다.
dtype이 생략될 경우, 데이터의 자료형을 유추하여 자동적으로 dtype을 할당합니다.
다차원 배열의 값을 불러올 때, 배열[페이지][행][열]... 형태로 배열의 값을 불러올 수 있습니다.
- Tip :
numpy배열은배열[0, 1]이나배열[0, 1, 1]처럼 하나의 대괄호 안에 쉼표로 구분하여 인덱스를 지정할 수도 있습니다.배열[0][1]은배열[0]로 중간 배열을 만든 뒤 다시[1]을 적용하지만,배열[0, 1]은 한 번에 원소에 접근하므로 더 효율적이며numpy에서 권장되는 방식입니다.
배열 속성 반환
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]])
print(a.ndim)
print(a.shape)
print(a.dtype)
print(np.ndim(b))
print(np.shape(b))- 결과
- 2
(3, 3)
int64
3
(3, 2, 2)
배열.ndim 또는 np.ndim(배열)을 사용하여 배열의 차원을 반환합니다.
배열.shape 또는 np.shape(배열)을 사용하여 배열의 형태를 반환합니다.
배열.dtype을 사용하여 배열의 자료형을 반환합니다.
배열 크기 반환
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.size)
print(len(a))
print(a.itemsize)
print(a.nbytes)- 결과
- 6
2
8
48
배열.size를 사용하여 배열의 전체 원소 개수를 반환합니다. shape의 모든 값을 곱한 값과 같습니다.
len(배열)은 전체 원소 개수가 아닌, 첫 번째 축(행)의 길이를 반환합니다.
배열.itemsize는 원소 하나가 차지하는 바이트 수를, 배열.nbytes는 배열 전체가 차지하는 바이트 수를 반환합니다.
int64는 원소 하나당 8바이트를 사용하므로, 6개의 원소로 이루어진 배열은 48바이트를 차지합니다.
자료형 변환
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.astype(np.float32)
c = np.array([1.7, -1.7, 2.5]).astype(int)
print(b)
print(b.dtype)
print(c)- 결과
- [[1. 2. 3.]
[4. 5. 6.]]
float32
[ 1 -1 2]
배열.astype(자료형)을 사용하여 자료형을 변환한 새로운 배열을 반환합니다. 원본 배열의 자료형은 변경되지 않습니다.
실수를 정수로 변환할 경우, 반올림이 아닌 소수점 이하를 버리는 방식으로 변환됩니다. 음수 역시 0에 가까운 방향으로 버려지므로 -1.7은 -1이 됩니다.
- Tip : 반올림한 정수가 필요하다면
np.round(배열).astype(int)처럼 먼저 반올림한 뒤 변환합니다. 단,np.round()는.5를 가장 가까운 짝수로 반올림하므로0.5는0,2.5는2가 됩니다.
댓글 남기기