본문 바로가기
Python/numpy

NumPy TypeError: 'numpy.ndarray' object is not subscriptable 오류 해결하기

by PySun 2024. 10. 14.
반응형

소개

NumPy를 사용하다 보면 가끔 'TypeError: 'numpy.ndarray' object is not subscriptable'라는 오류에 부딪힐 수 있습니다. 이 에러는 주로 NumPy 배열을 인덱싱하거나 슬라이싱하려고 할 때, 잘못된 방식으로 접근하려고 했을 때 나타납니다. 이번 글에서는 이 오류가 발생하는 원인과 해결 방법에 대해 자세히 알아보겠습니다.

에러 발생 예시 코드

먼저, 'TypeError: 'numpy.ndarray' object is not subscriptable' 오류가 발생할 수 있는 간단한 예제 코드를 살펴보겠습니다.

import numpy as np

# NumPy 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 잘못된 방식으로 배열에 접근
element = arr[5]  # 인덱스가 범위를 초과
print(element)

에러 해결 방법

1. 올바른 인덱스 범위 사용하기

NumPy 배열의 인덱스는 0부터 시작하므로, 배열의 길이를 확인하고 적절한 인덱스를 사용해야 합니다. 위의 예제에서 'arr[5]'는 5번째 인덱스를 찾으려 하지만, 실제로는 4까지의 인덱스만 존재합니다.

import numpy as np

# NumPy 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 올바른 인덱스를 사용하여 접근
element = arr[4]  # 마지막 요소 접근
print(element)

2. 배열의 차원 확인하기

가끔 배열이 2차원 또는 그 이상의 형태일 때, 잘못된 방식으로 접근하여 에러가 발생하기도 합니다. 배열의 차원을 확인하고 적절하게 인덱싱하세요.

import numpy as np

# 2차원 NumPy 배열 생성
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])

# 배열의 차원 확인
print("배열의 형태:", arr_2d.shape)

# 2차원 배열에 맞는 인덱싱
element = arr_2d[1, 2]  # 두 번째 행, 세 번째 열의 요소 접근
print(element)

마무리

이번 블로그 글에서는 NumPy에서 'TypeError: 'numpy.ndarray' object is not subscriptable' 에러가 발생하는 원인과 그 해결 방법에 대해 살펴보았습니다. 올바른 인덱스를 사용하거나 배열의 차원을 확인하는 방식으로 이러한 오류를 극복할 수 있습니다. NumPy를 사용할 때는 항상 데이터의 구조와 모양을 잘 이해하고 접근하려는 데이터의 인덱스를 올바르게 지정하는 것이 중요합니다. 문제를 해결하려는 노력도 좋지만, 오류를 이해하는 과정에서 많은 것을 배울 수 있으니 포기하지 마세요!

반응형