Numpy ValueError: 配列要素をシーケンスで設定しています。シーケンスが存在しないのにこのメッセージが表示されることがありますか? [重複] 質問する

Numpy ValueError: 配列要素をシーケンスで設定しています。シーケンスが存在しないのにこのメッセージが表示されることがありますか? [重複] 質問する

なぜこのエラーメッセージが表示されるのですか? ValueError: 配列要素をシーケンスで設定しています。ありがとうございます

Z=np.array([1.0,1.0,1.0,1.0])  

def func(TempLake,Z):
    A=TempLake
    B=Z
    return A*B

Nlayers=Z.size
N=3
TempLake=np.zeros((N+1,Nlayers))

kOUT=np.zeros(N+1)
for i in xrange(N):
    kOUT[i]=func(TempLake[i],Z)

ベストアンサー1

エラーメッセージが表示されています

ValueError: setting an array element with a sequence.

配列要素をシーケンスで設定しようとしているからです。これは気取った言い方ではありません。エラー メッセージは、問題が何であるかを正確に伝えようとしているのです。これは不可解なエラーだと考えないでください。単なるフレーズです。どの行に問題があるのでしょうか?

kOUT[i]=func(TempLake[i],Z)

この行は、返される値にithの要素を設定しようとします。次のケースを見てみましょう。kOUTfunc(TempLAke[i], Z)i=0

In [39]: kOUT[0]
Out[39]: 0.0

In [40]: func(TempLake[0], Z)
Out[40]: array([ 0.,  0.,  0.,  0.])

float のみを含む 4 要素配列をロードしようとしていますkOUT[0]。したがって、配列要素 (左側、kOUT[i]) をシーケンス (右側、func(TempLake[i], Z)) で設定しようとしています。

おそらく、funcあなたが望んでいることを実行していないと思いますが、あなたが本当に何をしたかったのかはわかりません (また、numpy ではループではなく、通常は A*B などのベクトル化された演算を使用できることを忘れないでください)。いずれにせよ、これで問題が説明されるはずです。

おすすめ記事