Numpy Tutorial-NumPy 다차원 배열 -ndarray

  1. ndarray 정의
  2. ndarray 속성

NumPy 는 다차원 배열을 기본 데이터 구조로 사용하는 라이브러리입니다. NumPy 의 유일한 데이터 구조는 ndarray 이지만 Python 프리미티브는 아닙니다. list 는 상대적으로 느리게 실행됩니다.

NumPy 의 초석 인 ‘ndarray’를 배운 후에는 NumPy 가 고속 컴퓨팅을 달성 할 수있는 이유를 이해할 수 있습니다.

ndarray 정의

ndarray 는 n- 차원 배열, 즉 다차원 배열의 약어입니다. ‘ndarray’는 고정 크기 항목의 다차원, 동종 배열을 나타내는 배열 객체입니다.

치수와 요소 수는 모양, 즉 각 차원의 요소 수를 나타내는 N 정수의 튜플에 의해 정의됩니다. 배열의 요소 유형은 dtype-data-type object 에 의해 정의됩니다.

위의 문장들을 평신도 언어로 설명해 봅시다. ndarray 객체에 저장된 모든 요소는 동일한 데이터 유형과 크기를 가져야합니다.

‘ndarray’데이터 타입의 특징은 다음과 같이 요약됩니다.

  1. 같은 유형의 요소 만 저장할 수 있습니다
  2. 각 차원의 데이터 양은 같아야합니다. 예를 들어, 2D ‘ndarray’는 모든 열과 물론 각 행에 동일한 양의 요소를 가져야합니다.
  3. 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