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中循环。)这应该可以解释问题,无论如何。