修正方法: 「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: オペランドをシェイプでブロードキャストできませんでした

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です