해결 방법: 'numpy.ndarray' 개체에 'index' 속성이 없습니다.
NumPy를 사용할 때 발생할 수 있는 오류는 다음과 같습니다.
AttributeError : 'numpy.ndarray' object has no attribute 'index'
이 오류는 인덱스 속성을 사용할 수 없는 NumPy 배열에서 index() 함수를 사용하려고 할 때 발생합니다.
다음 예에서는 실제로 이 오류를 해결하는 방법을 보여줍니다.
오류를 재현하는 방법
다음과 같은 NumPy 배열이 있다고 가정합니다.
import numpy as np #create NumPy array x = np. array ([4, 7, 3, 1, 5, 9, 9, 15, 9, 18])
다음 구문을 사용하여 배열의 최소값과 최대값을 찾을 수 있습니다.
#find minimum and maximum values of array
min_val = np. min (x)
max_val = np. max (x)
#print minimum and maximum values
print (min_val, max_val)
1 18
이제 배열에서 최소값과 최대값의 인덱스 위치를 찾으려고 한다고 가정합니다.
#attempt to print index position of minimum value
x. index (min_val)
AttributeError : 'numpy.ndarray' object has no attribute 'index'
NumPy 배열에 index() 함수를 적용할 수 없기 때문에 오류가 발생합니다.
오류를 해결하는 방법
NumPy 배열에서 최소값과 최대값의 인덱스 위치를 찾으려면 NumPywhere () 함수를 사용할 수 있습니다.
#find index position of minimum value
n.p. where (x == min_val)
(array([3]),)
#find index position of maximum value
n.p. where (x == max_val)
(array([9]),)
결과에서 우리는 다음을 볼 수 있습니다:
- 배열의 최소값은 인덱스 위치 3 에 있습니다.
- 배열의 최대값은 인덱스 위치 9 에 있습니다.
이와 동일한 일반 구문을 사용하여 NumPy 배열에서 모든 값의 인덱스 위치를 찾을 수 있습니다.
예를 들어, 다음 구문을 사용하여 NumPy 배열의 값 9와 동일한 인덱스 위치를 찾을 수 있습니다.
#find index positions that are equal to the value 9
n.p. where (x == 9 )
(array([5, 6, 8]),)
결과를 보면 인덱스 위치 5, 6, 8의 값이 모두 9 임을 알 수 있습니다.
추가 리소스
다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.
Pandas에서 KeyError를 수정하는 방법
해결 방법: ValueError: float NaN을 int로 변환할 수 없습니다.
해결 방법: ValueError: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.