728x90
IndexError: boolean index did not match indexed array along dimension
오류는 NumPy 배열 또는 pandas DataFrame에서 불리언 인덱싱을 사용할 때, 인덱스로 사용하는 불리언 배열의 길이가 대상 배열의 길이와 일치하지 않을 경우 발생합니다.
즉, 참/거짓(boolean) 값들의 개수가 데이터와 일치해야 정확히 어떤 요소를 선택할지 알 수 있는데, 이 개수가 다르면 인덱싱 자체가 불가능해 오류가 발생합니다.
● 오류 발생 예시
import numpy as np
arr = np.array([10, 20, 30])
mask = np.array([True, False])
print(arr[mask])
이 경우, 배열의 크기는 3인데 불리언 인덱스 배열은 길이 2이므로 오류가 발생합니다.
● 주요 원인
- 불리언 배열과 실제 데이터 배열 길이 불일치
- 필터 조건을 잘못 구성하거나 길이를 혼동한 경우
- pandas에서
df[condition]
구문에서 조건 길이 오류
● 해결 방법
- 조건 필터의 길이를 데이터 길이와 반드시 일치시키기
- pandas에서는
df.shape[0]
과condition.shape
을 비교 - NumPy 배열에서는
mask.shape
이 대상 배열과 같아야 함
● 예시 코드 (정상 처리)
mask = np.array([True, False, True])
print(arr[mask])
● 결론
불리언 인덱싱은 매우 강력하지만, 그 전제 조건은 인덱스 배열과 대상 배열의 크기가 같아야 한다는 점입니다. 따라서 불리언 마스크의 길이를 항상 확인하는 습관이 중요합니다.
728x90