- ones: 1로만 구성된 numpy배열
- zeros: 0으로만 구성된 numpy배열
- empty: 빈 numpy배열이나, 메모리를 초기화하지 않고 shape 크기 만큼 할당한 메모리공간의 값 반환하므로 생성될때마다 다른 값을 반환한다.
셋 다 매개변수로 shape를 지정하여 원하는 형태의 배열을 생성 할 수 있다.
또 dtype으로 데이터 타입도 지정 가능하다.
np.ones(shape=(3,5), dtype=np.int8)
>array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]], dtype=int8)
empty는 빈 배열이 나오는게 아니라 shape크기 만큼의 메모리에 원래 있던 값을 반환한다고 생각하면 된다.
np.empty(shape=(3,5),dtype=np.float64)
>array([[4.67931831e-310, 1.06099790e-312, 1.01855798e-312, 9.54898106e-313, 1.10343781e-312],
[1.01855798e-312, 1.23075756e-312, 1.08221785e-312, 1.12465777e-312, 9.76118064e-313],
[1.18831764e-312, 1.06099790e-312, 1.01855798e-312, 3.44981226e+175, 6.81019663e-310]])
추가로, 이 함수들 뒤에 _like만 붙이면 기존 배열을 매개변수로 활용할 수 있는데 다음과 같다.
ones_like & zeros_like & empty_like
- ones_like(기존 배열): 기존 배열의 모든 값을 1로 변환
- zeros_like(기존 배열): 기존 배열의 모든 값을 0으로 변환
- empty_like(기존 배열): 기좀 배열의 모든 값을 비움, 이때 empty와 마찬가지로 메모리 값 반환
단, 원본 데이터를 바꾸는게 아니라 새로 생성하는거라서 원본 데이터는 유지된다.
import numpy as np
xx = np.arange(12).reshape(4,-1)
xx
>array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
zero_xx = np.zeros_like(xx)
print(zero_xx)
print()
print(xx)
>[[0 0 0]
[0 0 0]
[0 0 0]
[0 0 0]]
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
'numpy' 카테고리의 다른 글
배열의 연산 (0) | 2022.03.26 |
---|---|
identity & eye & diag & 통계분석함수(uniform & normal) (0) | 2022.03.24 |
arange (0) | 2022.03.22 |
indexing & slicing (0) | 2022.03.20 |
reshape, flatten (0) | 2022.03.19 |