为什么会收到此错误消息? 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)
最佳答案
您收到错误消息
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.])
您正在尝试将只有4个元素的数组加载到只有浮点数的
kOUT[0]
中。因此,您尝试设置带有序列(右侧,kOUT[i]
)的数组元素(左侧,func(TempLake[i], Z)
)。func
可能没有满足您的要求,但是我不确定您真正想要的是什么(并且不要忘记您通常可以使用A * B之类的矢量化操作,而不是循环进入numpy。)问题,反正。