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)
问题答案:
您收到错误消息
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
不是您想要的,但是我不确定您真正想要的是什么(并且不要忘记,您通常可以使用A * B之类的矢量化操作,而不是在numpy中循环。)这应该可以解释问题,无论如何。