修正方法: 「numpy.float64」オブジェクトは反復可能ではありません
NumPy の使用時に発生する可能性のあるエラーは次のとおりです。
TypeError : 'numpy.float64' object is not iterable
このエラーは、NumPy で float 値に対して反復演算を実行しようとすると発生しますが、これは不可能です。
次の例は、このエラーを実際に解決する方法を示しています。
エラーを再現する方法
次の NumPy 配列があるとします。
import numpy as np #define array of data data = np. array ([1.3, 1.5, 1.6, 1.9, 2.2, 2.5]) #display array of data print (data) [1.3 1.5 1.6 1.9 2.2 2.5]
ここで、配列内の各値の合計を出力しようとするとします。
#attempt to print the sum of every value
for i in data:
print (sum(i))
TypeError : 'numpy.float64' object is not iterable
配列内の個々の float 値に対して反復 (値の合計を取得) しようとしたため、エラーが発生しました。
エラーを修正する方法
このエラーは次の 2 つの方法で回避できます。
1. 配列内の各値に対して非反復演算を実行します。
たとえば、配列内の各値を出力できます。
#print every value in array
for i in data:
print (i)
1.3
1.5
1.6
1.9
2.2
2.5
各値に対して反復処理を試みていないため、エラーは発生しません。
2. 多次元配列に対して反復演算を実行します。
多次元配列に対して反復演算を実行することでエラーを回避することもできます。
#create multi-dimensional array
data2 = np. array ([[1.3, 1.5], [1.6, 1.9], [2.2, 2.5]])
#print sum of each element in array
for i in data2:
print (sum(i))
2.8
3.5
4.7
多次元配列に対してsum()関数を使用するのは理にかなっているため、エラーは発生しません。
特に、NumPy が合計値を計算する方法は次のとおりです。
- 1.3 + 1.5 = 2.8
- 1.6 + 1.9 = 3.5
- 2.2 + 2.5 = 4.7
追加リソース
次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。
パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした