Numpy ValueError:设置具有序列的数组元素。该消息可能不存在序列出现?

发布于 2021-01-29 16:28:48

为什么会收到此错误消息?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)
关注者
0
被浏览
139
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您收到错误消息

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看