35

このエラーメッセージが表示されるのはなぜですか?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)
4

7 に答える 7

56

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

ValueError: setting an array element with a sequence.

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

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

この行は、のith要素kOUTを何func(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.])

kOUT[0]フロートしかない4要素配列を読み込もうとしています。したがって、配列要素(左側、kOUT[i])をシーケンス(右側、)で設定しようとしていますfunc(TempLake[i], Z)

おそらくfuncあなたが望んでいることをしていないのですが、あなたが本当に何をしたいのかわかりません(そして、通常、numpyでループするのではなく、A * Bのようなベクトル化された操作を使用できることを忘れないでください)。 、 とりあえず。

于 2012-11-09T16:26:34.150 に答える
5

Python配列は値を受け入れるだけだと思います。したがって、それをリストに変換します。

kOUT = np.zeros(N+1)
kOUT = kOUT.tolist()
于 2015-06-26T00:18:59.907 に答える