ndarray 생성과 속성
1. Numpy 배열
1. ndarray 객체 생성
NumPy 배열은 ndarray 객체로 표현되며, 다양한 방법으로 생성할 수 있습니다. 배열을 생성하는 가장 간단한 방법은 np.array()
함수를 사용하는 것입니다. 이 함수는 파이썬 리스트를 입력받아 NumPy 배열로 변환합니다. 이를 통해 파이썬 리스트보다 더 빠르고 효율적인 데이터 처리를 할 수 있습니다.
NumPy 배열은 다양한 차원을 가질 수 있으며, 1차원 배열은 벡터, 2차원 배열은 메트릭스(행렬), 3차원 이상의 배열은 텐서로 부릅니다. 구글에서 개발한 텐서플로우(TensorFlow)와 같은 딥러닝 라이브러리의 이름에서 알 수 있듯이, 결국 인공지능도 행렬로 이뤄진다는 것을 알 수 있습니다.
np.array()
말고도 다양한 방법으로 NumPy 배열을 생성할 수 있습니다. 예를 들어, np.zeros()
, np.ones()
, np.arange()
함수를 사용하여 0으로 채워진 배열, 1로 채워진 배열, 일정 간격의 숫자로 채워진 배열을 생성할 수 있습니다.
이에 대한 좀 더 상세한 내용은 다음 장에서 다루도록 하겠습니다.
1.2 데이터 타입
NumPy 배열은 다양한 데이터 타입을 지원하며, 배열 생성 시 자동으로 적절한 타입이 할당됩니다. 정수형, 실수형, 불리언, 복소수형 등 다양한 타입이 있으며, 각 타입은 서로 다른 특성과 사용 목적을 가집니다.
NumPy는 다양한 데이터 타입을 지원하며, 각 타입은 메모리 사용량과 표현 범위가 다릅니다. 다음은 NumPy에서 지원하는 주요 데이터 타입입니다.
데이터 타입 | 설명 | byte | 표현 범위 |
---|---|---|---|
int8 |
8비트 정수 | 1 | -128 ~ 127(2^8 표현) |
int16 |
16비트 정수 | 2 | -32,768 ~ 32,767(2^16 표현) |
int32 |
32비트 정수 | 4 | -2,147,483,648 ~ 2,147,483,647(2^32 표현) |
int64 |
64비트 정수 | 8 | 생략, 2^64 표현 |
float32 |
32비트 실수 | 4 | 약 ±3.4E38 |
float64 |
64비트 실수 | 8 | 약 ±1.8E308 |
bool |
불리언 값 | 1 | True 또는 False |
complex64 |
32비트 실수부 + 32비트 허수부 | 8 | 복소수 표현 |
complex128 |
64비트 실수부 + 64비트 허수부 | 16 | 복소수 표현 |
타입은 배열 생성 시 자동으로 설정되며 dtype
매개변수를 통해 명시적으로 지정할 수 있습니다. 예를 들어, 아래와 같이 사용할 수 있습니다. 다만 주의해야 할 것은 bool
같은 경우 내장 함수가 있어 bool_
로 사용해야 합니다.
2. 배열 속성
2.1 shape
shape 속성은 배열의 각 차원의 크기를 튜플로 반환합니다. 이는 배열이 몇 개의 행과 열로 구성되어 있는지, 또는 어떤 구조를 가지고 있는지 알 수 있게 해줍니다. 예를 들어, 2차원 배열의 shape이 (3, 4)라면, 이는 3행 4열의 구조를 가진 배열이라는 것을 의미합니다.
2.2 ndim
ndim 속성은 배열의 차원 수를 정수로 반환합니다. 이는 데이터 구조의 복잡도를 빠르게 파악하는 데 유용합니다. 1차원 배열은 ndim이 1, 2차원 배열은 2, 3차원 배열은 3을 반환합니다.
shape 과 ndim 무엇이 다를까?
특성 | ndim | shape |
---|---|---|
의미 | 배열의 차원 수 | 각 차원의 크기 |
반환 타입 | 정수 | 튜플 |
예시 (1차원) | 1 | (4,) |
예시 (2차원) | 2 | (2, 2) |
예시 (3차원) | 3 | (2, 2, 2) |
제공 정보 | 배열이 몇 차원인지 | 각 차원의 구체적인 크기 |
사용 목적 | 배열의 차원 수 확인 | 배열의 구조 확인 |
이 표를 통해 ndim과 shape의 주요 차이점을 한눈에 비교할 수 있습니다. ndim
은 차원의 수만을 간단히 알려주는 반면, shape
은 각 차원의 구체적인 크기 정보를 제공합니다.
2.3 size
size 속성은 배열의 총 요소 수를 정수로 반환합니다. 이는 배열의 전체 크기를 한 눈에 파악하는 데 도움이 됩니다. 예를 들어, 3x4 크기의 2차원 배열의 size는 12입니다. 이 정보는 메모리 사용량을 예측하거나 배열 연산의 복잡도를 계산할 때 유용하게 사용됩니다.
2.4 dtype
dtype 속성은 배열의 데이터 타입을 반환합니다. 이는 배열 내 요소들의 타입을 알려주며, 메모리 사용량과 연산 정확도에 영향을 미칩니다. 예를 들어, int32는 32비트 정수를, float64는 64비트 부동소수점 수를 나타냅니다.