python/Pandas | Numpy
[Numpy] ndarray 구조 - 배열의 모양, 차원 ,타입
Balang
2025. 5. 2. 09:12
728x90
NumPy의 핵심은 바로 ndarray다.
이 객체를 제대로 이해하지 못하면 벡터 연산, 브로드캐스팅, 슬라이싱, reshape, 연산 최적화 등 모든 기능이 막히게 된다.
ndarray란?
- N-dimensional array: 다차원 배열
- 리스트와 비슷하지만 훨씬 빠르고, 메모리 효율적이며, 다양한 수치 연산 지원
- Pandas의 .values도 사실 내부적으로는 ndarray
배열 생성 - np.array()
import numpy as np
a = np.array([1, 2, 3]) # 1차원 배열
b = np.array([[1, 2], [3, 4]]) # 2차원 배열
배열 속성 확인
a.shape # (3,)
a.ndim # 1
a.dtype # int64
a.size # 전체 요소 개수
a.itemsize # 각 요소의 byte 수
a.nbytes # 전체 배열 메모리(byte 단위)
다양한 차원 생성
np.zeros((2, 3)) # 2행 3열 0으로 채운 배열
np.ones((3, 1)) # 3x1 배열
np.full((2, 2), 7) # 2x2 배열에 7 채움
np.eye(3) # 단위 행렬
np.arange(0, 10, 2) # [0 2 4 6 8]
np.linspace(0, 1, 5) # 0~1 구간을 5등분
배열 타입 지정
a = np.array([1, 2, 3], dtype=np.float32)
실무에서 사용 시에는 메모리 최적화, 계산 정화도 제어어 중요
다차원 배열 구조 예시
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
- c.shape → (2, 2, 2) → 3차원
- 층(2개) → 행(2개) → 열(2개)
배열 인덱싱 및 슬라이싱
a = np.array([[10, 20, 30], [40, 50, 60]])
a[0, 1] # → 20
a[1] # → [40, 50, 60]
a[:, 1] # → 열 전체 [20, 50]
a[1, :] # → 행 전체 [40, 50, 60]
reshape로 형태 바꾸기
a = np.arange(6).reshape((2, 3))
- 1차원 → 2차원 변환
- 반드시 원소 개수 총합이 동일해야 함
예제: Pandas .values 활용
import pandas as pd
df = pd.DataFrame({
'math': [90, 80, 70],
'eng': [85, 75, 65]
})
arr = df.values # type: ndarray
arr.shape # (3, 2)
NumPy의 모든 기능은 ndarray라는 데이터 구조를 중심으로 동작한다.
이 구조를 완벽히 이해하면 이후에 나올 브로드캐스팅, 벡터화, 슬라이싱, 연산 최적화 등의 개념을 훨씬 쉽게 받아들일 수 있다.
728x90
반응형