NumPy Tutorial-NumPy 다차원 배열 -ndarray
NumPy 는 다차원 배열을 기본 데이터 구조로 사용하는 라이브러리입니다. NumPy 의 유일한 데이터 구조는 ndarray
이지만 Python 프리미티브는 아닙니다. list
는 상대적으로 느리게 실행됩니다.
NumPy 의 초석 인 ndarray
를 배운 후에는 NumPy 가 고속 컴퓨팅을 달성 할 수있는 이유를 이해할 수 있습니다.
ndarray 정의
ndarray
는 n- 차원 배열, 즉 다차원 배열의 약어입니다. ndarray
는 고정 크기 항목의 다차원, 동종 배열을 나타내는 배열 객체입니다.
치수와 요소 수는 모양, 즉 각 차원의 요소 수를 나타내는 N 정수의 튜플에 의해 정의됩니다. 배열의 요소 유형은 dtype
-data-type object
에 의해 정의됩니다.
위의 문장들을 평신도 언어로 설명해 봅시다. ndarray 객체에 저장된 모든 요소는 동일한 데이터 유형과 크기를 가져야합니다.
ndarray
데이터 타입의 특징은 다음과 같이 요약됩니다.
- 같은 유형의 요소 만 저장할 수 있습니다
- 각 차원의 데이터 양은 같아야합니다. 예를 들어, 2D ’ndarray’는 모든 열과 물론 각 행에 동일한 양의 요소를 가져야합니다.
- C 언어로 작성되었으며 행렬 연산을 최적으로 수행 할 수 있습니다.
ndarray 속성
ndarray
의 속성을 나열 해 봅시다.
속성 | 기술 |
---|---|
T |
전치 행렬. 배열이 1D 이면 원래 배열이 반환됩니다. |
data |
배열에서 데이터의 시작 위치를 가리키는 Python 버퍼 객체입니다. |
dtype |
ndarray 에 포함 된 요소의 데이터 유형입니다. |
flags |
ndarray 데이터를 메모리에 저장하는 방법에 대한 정보 (메모리 레이아웃). |
flat |
ndarray 를 1 차원 배열로 변환하는 반복자입니다. |
imag |
ndarray 데이터의 가상 부분 |
real |
ndarray 데이터의 실제 부분 |
size |
ndarray 에 포함 된 요소 수입니다. |
itemsize |
각 요소의 크기 (바이트)입니다. |
nbytes |
ndarray 가 차지한 총 메모리 (바이트)입니다. |
ndim |
ndarray 에 포함 된 차원 수입니다. |
shape |
ndarray 의 모양 (결과는 튜플입니다). |
strides |
각 치수 방향으로 다음 인접 요소로 이동하는 데 필요한 바이트 수는 튜플로 표시됩니다. |
ctypes |
ctypes 모듈에서 처리되는 반복자입니다. |
base |
ndarray 의 기반이되는 개체 (어떤 메모리가 참조되고 있는지) |
ndarray
의 속성에 액세스하면.T
를 사용하여 객체의 조옮김을 가져 오더라도 ndarray
인스턴스의 데이터는 수정되지 않습니다. 새로운 ndarray
객체를 얻었지만 원래 데이터는 수정하지 않았습니다.
예제 코드를 통해 각 속성의 특정 의미를 살펴 보겠습니다.
>>> import numpy as np
>>> a = np.array([1, 2, 3])
NumPy
라이브러리를 가져 와서 새로운 1 차원 배열을 만들어야합니다. 데이터 유형과 요소의 데이터 유형을 확인할 수 있습니다.
>>> type(a)
numpy.ndarray
>>> a.dtype
dtype('int32')
새로운 2 차원 배열을 만든 다음 해당 특성을 확인하겠습니다.
>>> b = np.array([[4, 5, 6], [7, 8, 9]])
>>> b
array([[4, 5, 6],
[7, 8, 9]])
>>> b.T # get the transpose of b
array([[4, 7],
[5, 8],
[6, 9]])
>>> b # b keeps unmodified
array([[4, 5, 6],
[7, 8, 9]])
>>> a.size # a has 3 elements
3
>>> b.size # b has 6 elements
6
>>> a.itemsize # The size of element in a. The data type here is int64 - 8 bytes
8
>>> b.nbytes # check how many bytes in b. It is 48, where 6x8 = 48
48
>>> b.shape # The shape of b
(2, 3)
>>> b.dnim # The dimensions of b
2
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook