Python/Numpy

벡터의 차원 vs NumPy의 차원 — 헷갈리는 당신을 위해

THINKRUNNER 2025. 4. 24. 21:05
벡터의 차원 vs NumPy의 차원 — 헷갈리는 당신을 위해

🧠 벡터의 차원 vs NumPy의 차원 — 헷갈리는 당신을 위해 🙃

🤔 1. 왜 이 주제를 꺼냈을까?

머신러닝 관련 수학을 공부하면서 자꾸 '차원'이라는 단어가 튀어나오는데요. 벡터의 차원? NumPy 배열의 차원? 그게 같은 말 아니야? 라고 생각했던 저... 아니었습니다 😂 그래서 이 문제를 진짜로 파헤쳐 보기로 했어요.

벡터와 NumPy 배열은 다릅니다!

📐 2. 벡터에서 말하는 "차원"이란?

수학에서는 벡터의 차원이란 "방향의 수"를 의미합니다. 예: [1, 2, 3]은 3차원 벡터입니다.

왜? x, y, z 세 방향을 나타내니까요. 한 벡터에 세 개의 숫자가 있다는 건, 세 개의 축 위에서 위치를 표현할 수 있다는 의미죠.

🧊 3. NumPy 배열에서의 "차원"이란?

NumPy의 차원은 벡터의 차원과 다르게 "축(axis)의 수"입니다. 얼마나 중첩된 리스트 구조인가를 의미하죠!

  • 1D: [1, 2, 3] → shape: (3,)
  • 2D: [[1, 2, 3]] → shape: (1, 3)
  • 3D: [[[1, 2, 3]]] → shape: (1, 1, 3)
📌 요약: 벡터는 "방향", NumPy는 "몇 장을 포장했나"!

😵 4. 그럼 왜 헷갈릴까?

같은 데이터라도 포장(구조) 수가 다르면 shape이 달라지기 때문입니다. 수학적 값 vs 프로그래밍 구조!

예를 들어, np.array([[[1]]])은 shape이 (1, 1, 1)인 3차원 배열이지만, 수학적으로는 그냥 스칼라 값 1일 뿐이에요! 이처럼, 데이터는 같지만 배열 구조가 다르면 shape도 다르다는 점이 처음엔 헷갈릴 수 있어요.

✔ 요약: 수학은 위치, NumPy는 저장구조!

🧠 5. 헷갈리지 않는 법

  1. 벡터는 방향에 집중!
  2. NumPy 배열은 '데이터가 몇 겹으로 포장돼 있는가'에 집중!
  3. 항상 .shape를 살펴서 포장 수를 눈으로 확인하자!

🧪 6. 예시 실습

import numpy as np
x = np.array([[[1]]])
print(x.shape)    # (1, 1, 1)
print(x[0, 0, 0]) # 1

print(np.array([1, 2, 3]).ndim)      # 1
print(np.array([[1, 2, 3]]).ndim)    # 2
print(np.array([[[1, 2, 3]]]).ndim)  # 3
    

🙏 7. 마무리하며

차원이라는 단어 하나가 상황에 따라서 이렇게 다른 의미를 가질 수 있다는 걸 알고 나니, 앞으로는 덜 헷갈릴 것 같아요. 벡터와 NumPy는 둘 다 “차원”을 말하지만, 완전히 다른 세상의 언어라는 것! 그 차이를 이해하는 순간, 진짜 Numpy 세계로 한 발 더 들어온 느낌입니다 💪

🎉 핵심 요약: 벡터=방향, NumPy=포장 구조 🌍

작성일: 2025-04-24