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

コメントを追加する

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