# Numpy 자료구조 :: ndarray
Numpy 라이브러리의 주요 자료구조는 ndarray로 다차원 데이터를 저장하며 여러 연산 및 인덱싱에 필요한 툴을 제공한다.
위의 사진은 n차원의 배열을 시각화하여 표현한 것이다. 위의 데이터를 저장하는 ndarray는 아래의 구성요소를 갖는다.
- 형태 (shape)
- 원소의 수 (size)
- 저장된 데이터 타입 (dtype)
- 축 (axis)
각 차원의 shape와 axis 방향은 위의 그림과 같이 표현된다.
Numpy의 ndarray 자료구조는 아래와 같은 장점을 가지고 있다.
- 다차원 데이터 지원: 1차원 벡터부터 N차원 배열까지 자유롭게 다룰 수 있어 복잡한 데이터 구조를 효율적으로 관리할 수 있다.
- 동일한 데이터 타입 유지: 배열 내 모든 요소가 같은 데이터 타입을 가지므로, 데이터 처리 속도가 빠르고 메모리 사용 효율이 높다.
- 연속적인 메모리 저장: 데이터를 메모리에 연속적으로 저장해 일반 리스트보다 메모리 효율성이 뛰어나다.
- 빠른 벡터화 연산: 반복문 없이 배열 간 수치 연산을 빠르게 수행할 수 있어 대규모 데이터 처리에 적합하다.
- 다양한 기능 제공: 슬라이싱, 인덱싱, 통계 및 선형 대수 연산 등 복잡한 작업을 쉽게 처리할 수 있는 기능을 제공한다.
# ndarray API Reference & Source code 살펴보기
API Reference:: numpy 홈페이지 API Reference :: ndarray
Source Code :: numpy.ndarray source code github
ndarray의 API Reference를 살펴보면 다음과 같다 .
※ ndarray 관련 파라미터
- shape는 ndarray를 선언할 때 생성할 ndarray의 모양을 정하는 것으로 int 또는, 튜플로 크기를 설정한다. 이를 통해 1차원뿐만 아니라 고차원의 데이터를 저장할 수 있다.
- dtype는 ndarray의 요소의 type을 지정하는 것으로 ndarray의 모든 요소는 하나의 자료형으로 통일된다. (optional)
- buffer는 ndarray를 채울 데이터를 제공하는 버퍼 객체이다. 파일, 메모리 맵 등의 외부 데이터로부터 배열을 초기화할 때 사용된다. (형식:: object exposing buffer interface )(optional)
- offset는 int 자료형으로 버퍼에서 배열 데이터를 읽을 때의 시작 위치(바이트 단위)를 설정하는 파라미터이다. 기본값은 0이고, 데이터를 특정 위치에서부터 읽고 싶을 때 사용한다.(optional)
- strides는 튜블 혹은 int자료형으로 배열의 메모리에서 다음 요소로 이동하는 바이트 수를 정의한다. 기본적으로는 배열의 연속성을 유지하지만, 고급 메모리 관리를 위해 변경할 수 있다. (optional)
- order는 배열의 데이터가 메모리에 저장되는 방식을 지정한다. 형식은 'C'와 'F'가 있으며 'C'는 행을 우선 저장하는 방식으로 C언어 스타일이고, 'F'는 열을 우선으로 저장하는 방식으로 Fortran 스타일이다. (optional)
# Code Example (ndarray 활용)
#예시 코드
import numpy as np
#Numpy API Reference examples..
# 랜덤한 요소로 채우며 size는 2x2로 설정하고 배열의 모든 요소의 type는 float이다.
test_arr1 = np.ndarray(shape=(2,2), dtype=float, order='F')
#buffer에 인자로 [1,2,3,으로 설정하였고] shape는 (2,)이다. 이때 offset을 np.int_().itemsize으로 설정하였는데
#이는 시작 위치를 지정하는 것으로 1번째 buffer의 요소부터 시작하겠다는 것을 의미하는 것이다.
#(바이트 단위이기에 요소의 자료형인 1*np.int_().itemsize로 설정한 것이다)
test_arr2 = np.ndarray((2,), buffer=np.array([1,2,3]),
offset=np.int_().itemsize,
dtype=int)
# 코드 실행 결과
Numpy ndarray example 1
[[4.67277596e-310 2.76676762e-322]
[0.00000000e+000 4.67263473e-310]]
Numpy ndarray example 2
[2 3]
'공부한 것들.. > Numpy' 카테고리의 다른 글
Numpy 집계 함수 (0) | 2024.09.12 |
---|---|
Numpy 기본 연산 (0) | 2024.09.12 |
Numpy ndarray shape 변경 (0) | 2024.09.12 |
Numpy :: 데이터 타입 (0) | 2024.09.12 |
Numpy 자료구조:: ndarray 생성 (2) | 2024.09.11 |