본문 바로가기
공부한 것들../Numpy

Numpy 자료구조 :: ndarray (N- Dimension Array)

by bottle-an00 2024. 9. 9.

# Numpy 자료구조 :: ndarray

Numpy 라이브러리의 주요 자료구조는 ndarray로 다차원 데이터를 저장하며 여러 연산 및 인덱싱에 필요한 툴을 제공한다.

https://tensorflownet.readthedocs.io/en/latest/_static/tensor-naming.png

위의 사진은 n차원의 배열을 시각화하여 표현한 것이다. 위의 데이터를 저장하는 ndarray는 아래의 구성요소를 갖는다.

  • 형태 (shape)
  • 원소의 수 (size)
  • 저장된 데이터 타입 (dtype)
  • 축 (axis)

https://nustat.github.io/DataScience_Intro_python/Datasets/numpy_image.png

각 차원의 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