Python/Numpy

arr[0:2, 2] vs arr[0:2, 1:2] 차이는 뭘까? 🤯

THINKRUNNER 2025. 4. 24. 21:11
arr[0:2, 2] vs arr[0:2, 1:2] 차이는 뭘까? 🤯

🧠 arr[0:2, 2] vs arr[0:2, 1:2] 차이는 뭘까? 🤯

1. 이게 뭐가 다르지? 🤨

NumPy를 쓰다 보면 이런 코드들을 만나게 됩니다:

arr[0:2, 2]
arr[0:2, 1:2]

얼핏 보면 별 차이 없어 보이죠?

그런데 출력 결과를 보면 차원이 달라지는 미묘한 차이가 있다는 걸 알게 됩니다.

2. 정수 인덱싱 vs 슬라이스 인덱싱 🧠

정수 인덱싱은 해당 축을 "삭제"하고, 슬라이스 인덱싱은 해당 축을 "유지"합니다.

📌 한 줄 요약

정수 인덱싱은 차원을 줄이고, 슬라이스 인덱싱은 차원을 유지한다!

3. 실전 예제로 살펴보자! 🧪

import numpy as np

arr = np.array([[1, 2, 3, 4, 5],
                [6, 7, 8, 9, 10]])

print(arr[0:2, 2])     # → [3 8], shape: (2,)
print(arr[0:2, 1:2])   # → [[2], [7]], shape: (2, 1)

4. 왜 이런 차이가 생기는 걸까? 🤔

arr[0:2, 2]는 정수 인덱싱이라서 "2번째 열만 뽑아서 벡터(1D)"가 되고, arr[0:2, 1:2]는 슬라이스 인덱싱이라서 "2번째 열을 열벡터 형태로 유지(2D)"하기 때문입니다.

✔ 한 줄 정리

정수 인덱싱은 축을 '결정'하고, 슬라이스는 '선택'만 한다.

5. 왜 이게 중요하냐고요? 🧐

머신러닝, 행렬 연산, 데이터 전처리에서는 shape이 살짝 달라도 에러나거나 결과가 달라지기 때문입니다!

그래서 정확한 차원 유지/제거 개념이 엄청 중요합니다!

6. 헷갈리지 않는 팁 ✨

  • 정수 인덱싱은 차원을 없앤다 → 스칼라나 벡터
  • 슬라이스 인덱싱은 차원을 유지한다 → 행렬 구조 유지
  • shape 차이가 나면 계산 결과가 달라진다!

7. 마무리하며 🙏

배열 속 숫자는 같아 보여도, 인덱싱 방법에 따라 차원과 구조가 완전히 달라집니다. NumPy 배열 다루기 전 이걸 반드시 이해하고 넘어가야 해요! 💪

🎉 핵심 요약

정수 인덱싱은 축을 "지우고", 슬라이스 인덱싱은 축을 "남긴다"! shape이 다르면 모든 게 달라진다! 계속 반복하게 되네요🤨

작성일: 2025-04-24