修正方法: 「numpy.float64」オブジェクトは int として解釈できません
NumPy の使用時に発生する可能性のあるエラーは次のとおりです。
TypeError : 'numpy.float64' object cannot be interpreted as an integer
このエラーは、整数を期待する関数に浮動小数点数を指定した場合に発生します。
次の例は、このエラーを実際に修正する方法を示しています。
エラーを再現する方法
次の for ループを使用して、NumPy 配列にさまざまな数値を出力しようとするとします。
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #use for loop to print out range of values at each index for i in range(len(data)): print (range(data[i])) TypeError : 'numpy.float64' object cannot be interpreted as an integer
range()関数は整数を想定しているため、エラーが発生しますが、NumPy 配列の値は浮動小数点です。
エラーを修正する方法
このエラーをすばやく修正するには、次の 2 つの方法があります。
方法 1: int() 関数を使用する
このエラーを修正する 1 つの方法は、次のように呼び出しをint()で単純にラップすることです。
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #use for loop to print out range of values at each index for i in range(len(data)): print (range(int(data[i]))) range(0, 3) range(0, 4) range(0, 5) range(0, 7) range(0, 10) range(0, 11)
int()関数を使用して、NumPy 配列内の各 float 値を整数に変換し、前に発生したTypeErrorを回避します。
方法 2: .astype(int) 関数を使用する
このエラーを修正するもう 1 つの方法は、最初に NumPy 配列の値を整数に変換することです。
import numpy as np #define array of values data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4]) #convert array of floats to array of integers data_int = data. astype (int) #use for loop to print out range of values at each index for i in range(len(data)): print (range(data[i])) range(0, 3) range(0, 4) range(0, 5) range(0, 7) range(0, 10) range(0, 11)
このメソッドを使用することで、再びTypeErrorを回避できます。
追加リソース
次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。
パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした