なぜこのエラーメッセージが表示されるのですか? 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
の要素を設定しようとします。次のケースを見てみましょう。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.])
float のみを含む 4 要素配列をロードしようとしていますkOUT[0]
。したがって、配列要素 (左側、kOUT[i]
) をシーケンス (右側、func(TempLake[i], Z)
) で設定しようとしています。
おそらく、func
あなたが望んでいることを実行していないと思いますが、あなたが本当に何をしたかったのかはわかりません (また、numpy ではループではなく、通常は A*B などのベクトル化された演算を使用できることを忘れないでください)。いずれにせよ、これで問題が説明されるはずです。