修正方法: typeerror: 柔軟な型で削減できません


Python の使用時に発生する可能性のあるエラーは次のとおりです。

 ValueError : cannot perform reduce with flexible type

このエラーは、Python で数値ではないオブジェクトに対して計算を実行しようとすると発生します。

次の例は、このエラーを実際に修正する方法を示しています。

エラーを再現する方法

次の NumPy 配列があるとします。

 import numpy as np

#define NumPy array of values
data = np. array (['1', '2', '3', '4', '7', '9', '10', '12'])

#attempt to calculate median of values
n.p. median (data)

TypeError : cannot perform reduce with flexible type

文字列値のリストの中央値を計算しようとしたため、 TypeError が返されます。

エラーを修正する方法

このエラーを修正する最も簡単な方法は、単純に NumPy 配列を float オブジェクトに変換して、数学的演算を実行できるようにすることです。

次のコードは、これを行う方法を示しています。

 #convert NumPy array of string values to float values
data_new = data. astype (float)

#view updated NumPy array
data_new

array([ 1., 2., 3., 4., 7., 9., 10., 12.])

#check data type of array
data_new. dtype

dtype('float64')

これで、NumPy 配列に対して数学演算を実行できるようになりました。

 #calculate median value of array
n.p. median (data_new)

5.5

#calculate mean value of array
n.p. mean (data_new)

6.0

#calculate max value of array
n.p. max (data_new)

12.0

NumPy 配列は float オブジェクトであるため、エラーが発生しないことに注意してください。これは、それに対して数学的演算を実行できることを意味します。

追加リソース

次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。

パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした

コメントを追加する

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