본문 바로가기
[R&D] 프로그래밍/Numpy

[Numpy] 넘파이 배열 생성 및 속성 확인 방법

by Geuni 2022. 7. 11. 06:18
728x90
반응형

1. 배열 생성 방법

array()

array는 값을 직접 인자로 채워서 배열을 생성합니다.

dim1 = np.array([1, 2, 3])
# [1 2 3] int32

dim2 = np.array([(1, 2, 3), (4, 5, 6)], dtype=np.float)
# [[1. 2. 3.]
#  [4. 5. 6.]] float64

array는 리스트와 튜플의 조합으로 값을 직접 인자로 넣어 배열을 생성합니다. 리스트 '[]' 내에 값을 채우는데 차원을 늘리려면 튜플의 형태로 분리해 줍니다. 또한 옵션을 통해 dtype을 선택할 수 있습니다.


zeros() / ones() / full()

#=========== zeros ===========
dim1 = np.zeros((3))
# [0. 0. 0.] float64

dim2 = np.zeros((2, 3), dtype=np.bool)
# [[False False False]
#  [False False False]] bool

#=========== ones ===========
dim1 = np.ones((3), dtype=np.int16)
# [1 1 1] int16

dim2 = np.ones((2, 3))
# [[1. 1. 1.]
#  [1. 1. 1.]] float64

#=========== full ===========
dim1 = np.full((3), 1.336)
# [1.336 1.336 1.336] float64

dim2 = np.full((2, 3), 12)
# [[12 12 12]
#  [12 12 12]] int32

zeros, ones, full은 메소드 명에서 알 수 있듯이 특정 값을 자동으로 채워 배열을 생성합니다.

zeros : 0으로 값을 채움
ones :  1로 값을 채움
full : 인자로 값을 지정해 채움

 

dtype을 설정하지 않고 배열을 만들면 기본적으로 float 형으로 생성됩니다.


empty()

dim1 = np.empty((3))
# [5.e-324 4.e-323 2.e-323] float64

dim2 = np.empty((2, 3, 2), dtype=np.int)
# [[[0 0]
#   [0 0]
#   [0 0]]

#  [[0 0]
#   [0 0]
#   [0 0]]] int32

empty는 값을 비운 채로 배열을 생성합니다. 즉, 값을 지정하지 않고 메모리만 할당해서 만들기 때문에 임의 값 또는 쓰레기 값 (garbage value)가 채워져 있을 수 있습니다. 이 값은 해당 메모리가 마지막으로 사용되었을 때 남겨진 값입니다.


arange()

dim1 = np.arange(0, 30, 10)
# [ 0 10 20] int32

dim2 = np.arange(0, 30, 5).reshape((2, 3))
# [[ 0  5 10]
#  [15 20 25]] int32

arange(start, stop, step)는 'start <= n < stop' 범위에 있는 숫자들을 step 간격으로 값을 저장합니다.

또한 reshape 메소드를 활용해 차원을 바꿔 줄 수 있습니다.


linspace()

dim1 = np.linspace(1, 10, 12, dtype=np.int)
# [ 1  1  2  3  4  5  5  6  7  8  9 10] int32

dim1 = np.linspace(1, 10, 12)
# [ 1.          1.81818182  2.63636364  3.45454545  4.27272727  5.09090909
#   5.90909091  6.72727273  7.54545455  8.36363636  9.18181818 10.        ] float64

linspace(start, stop, num)는 'start <= n <= stop' 범위에 있는 숫자들을  num의 수로 나누어 배열을 만듭니다.


2. 배열 속성 확인

ndarray는 배열의 속성을 확인할 수 있는 메소드가 있습니다.
anp = np.array([1, 1.1, 2, 2.2])

print('shape        :', anp.shape)
print('dimension    :', anp.ndim)
print('data type    :', anp.dtype)
print('element size :', anp.itemsize)
print('total size   :', anp.size)

# shape        : (4,)
# dimension    : 1
# data type    : float64
# element size : 8
# total size   : 4

bnp = np.array([(False, True, False, True), (1, 2, 3, 4)])

print('shape        :', bnp.shape)
print('dimension    :', bnp.ndim)
print('data type    :', bnp.dtype)
print('element size :', bnp.itemsize)
print('total size   :', bnp.size)

# shape        : (2, 4)
# dimension    : 2
# data type    : int32
# element size : 4
# total size   : 8

cnp = np.array([(False, True), (False, True), (False, True), (False, True)])

print('shape        :', cnp.shape)
print('dimension    :', cnp.ndim)
print('data type    :', cnp.dtype)
print('element size :', cnp.itemsize)
print('total size   :', cnp.size)

# shape        : (4, 2)
# dimension    : 2
# data type    : bool
# element size : 1
# total size   : 8
shape : 배열의 모양을 반환 (n, n ... )
ndim : 배열의 차원을 반환
dtype : 배열의 데이터 타입
itemsize : 배열의 각 요소의 데이터 크기를 반환
size : 배열 요소의 총 갯수를 반환
728x90
반응형

댓글