🧠 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이 다르면 모든 게 달라진다! 계속 반복하게 되네요🤨