修正方法: 「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 の他の一般的なエラーを修正する方法を説明します。
パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした