NumPy 기초


NumPy 어레이

NumPy의 주요한 객체는 다차원의 동종 어레이 (homogeneous multidimensional array)입니다.

보통 이 어레이는 숫자 요소들의 모음이며, 모두 동일한 자료형을 갖습니다.

NumPy에서 차원은 축 (axis)이라고 합니다.


예를 들어, 3차원 공간에서 점 [1, 2, 1]의 좌표는 하나의 축 (axis)을 갖습니다.

이 축은 3개의 요소를 가지고 길이는 3입니다.


[[ 1., 0., 0.],
 [ 0., 1., 2.]]

이 어레이는 두 개의 축을 갖는데, 첫번째 축은 길이가 2이고 두번째 축은 길이가 3입니다.


numpy.ndarray 클래스

NumPy의 어레이는 ndarray 클래스인데,

표준 파이썬 라이브러리의 array.array 클래스와는 다릅니다.


파이썬의 array.array 클래스는 1차원 어레이만 다루며, NumPy 어레이에 비해 더 적은 기능을 제공합니다.

numpy.ndarray 객체의 중요한 속성은 다음과 같습니다:

ndarray.ndim
: 어레이의 축의 개수 (차원).
ndarray.shape
: 어레이의 차원. 각 차원의 어레이의 크기를 나타내는 정수의 튜플.
n개의 행, m개의 열을 갖는 행렬의 경우, shape은 (n, m). 따라서 shape 튜플의 길이는 축의 개수가 됨.
ndarray.size
: 어레이의 요수의 총 개수. shape 튜플의 요소의 곱과 같음.
ndarray.dtype
: 어레이의 요소의 타입을 나타내는 객체.
표준 파이썬 타입을 이용해서 dtype을 만들거나 지정할 수 있음.
이 외에도 NumPy는 numpy.int32, numpy.int16, numpy.float64와 같은 고유한 타입을 제공함.
ndarray.itemsize
: 어레이의 각 요소의 바이트 크기.
예를 들어, float64 타입의 요소를 갖는 어레이는 itemsize가 8 (=64/8).
complex32 타입을 갖는 어레이의 itemsize는 4 (=32/8). ndarray.dtype.itemsize와 같음.
ndarray.data
: 어레이의 실제 요소를 갖는 버퍼.
보통, 인덱스 기능을 이용해서 어레이의 요소에 접근하기 때문에 이 속성을 사용할 필요가 없을 것임.


예제

import numpy as np

a = np.arange(15).reshape(3, 5)
print(a)
print('a.shape:', a.shape)             # 어레이의 차원
print('a.ndim:', a.ndim)               # 어레이의 축의 개수
print('a.dtype.name:', a.dtype.name)   # 어레이 요소의 타입
print('a.itemsize:', a.itemsize)       # 어레이 요소의 바이트 크기
print('a.size:', a.size)               # 어레이 요소의 총 개수
print('type(a):', type(a))             # 어레이의 타입
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
a.shape: (3, 5)
a.ndim: 2
a.dtype.name: int64
a.itemsize: 8
a.size: 15
type(a): <class 'numpy.ndarray'>

numpy.ndarray 객체의 다양한 속성 (attribute)들은 이 객체에 대한 다양한 정보를 제공합니다.

이제 다음 페이지에서는 NumPy 어레이를 생성하는 다양한 방법에 대해 알아보겠습니다.



이전글/다음글