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
반응형