[Numpy] ndarray 구조 - 배열의 모양, 차원 ,타입

2025. 5. 2. 09:12·python/Pandas | Numpy
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
반응형
저작자표시 비영리 변경금지 (새창열림)

'python > Pandas | Numpy' 카테고리의 다른 글

[Numpy] 슬라이싱, 마스킹, 조건 추출  (0) 2025.05.02
[Numpy] 브로드캐스팅(broadcasting)과 벡터화(vectorization) 연산  (0) 2025.05.02
[Numpy] percentile() - 백분위수 구하기  (0) 2025.05.02
[Pandas] clip() - 이상값 방어의 핵심  (0) 2025.05.02
[Pandas] where() - 조건을 만족하는 값은 살리고, 아니면 치환  (0) 2025.04.29
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Numpy] 슬라이싱, 마스킹, 조건 추출
  • [Numpy] 브로드캐스팅(broadcasting)과 벡터화(vectorization) 연산
  • [Numpy] percentile() - 백분위수 구하기
  • [Pandas] clip() - 이상값 방어의 핵심
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (148) N
      • python (45)
        • selenium (4)
        • algorithm (9)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (30) N
      • Data Scientist (3)
      • Data Analysis (9)
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Numpy] ndarray 구조 - 배열의 모양, 차원 ,타입
상단으로

티스토리툴바