当前位置: 首页 > 知识库问答 >
问题:

Numpy VALUERROR:使用序列设置数组元素。此消息可能在不存在序列的情况下出现?

阎自怡
2023-03-14

为什么我会收到此错误消息?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)

共有3个答案

赫连开畅
2023-03-14

我相信python数组只是承认值。所以将其转换为列表:

kOUT = np.zeros(N+1)
kOUT = kOUT.tolist()
沈华晖
2023-03-14

遗憾的是,这两个答案都分析了问题,但没有给出直接的答案。让我们看看代码。

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):
    # store the i-th result of
    # function "func" in i-th item in kOUT
    kOUT[i] = func(TempLake[i], Z)

错误显示您将kOUT的第i项(dtype:int)设置为数组。这里kOUT中的每个项都是int,不能直接分配给另一个数据类型。因此,您应该在创建kOUT时声明它的数据类型。例如:

更改以下声明:

kOUT = np.zeros(N + 1)

进入:

kOUT = np.zeros(N + 1, dtype=object)

或:

kOUT = np.zeros((N + 1, N + 1))

所有代码:

import numpy as np
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, dtype=object)
for i in xrange(N):
    kOUT[i] = func(TempLake[i], Z)

希望它能帮助你。

宫元徽
2023-03-14

你会收到错误信息

ValueError: setting an array element with a sequence.

因为您试图设置具有序列的数组元素。我不是想装可爱,在那里-错误消息试图告诉你到底是什么问题。不要认为这是一个神秘的错误,这只是一个短语。问题出在哪条线上?

kOUT[i]=func(TempLake[i],Z)

此行尝试将kOUTith元素设置为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中循环。)不管怎样,这应该可以解释这个问题。

 类似资料:
  • 我的问题是,有什么方法可以让我序列化/反序列化一个名为onlinePlayers的列表,该列表引用了“John1”的实例,它也碰巧在List allPlayers中,而不重复“John1”,同时仍然引用那个对象? 我猜当我反序列化allPlayers时,它将创建不同于原始对象的对象,所以onlinePlayers在反序列化后不可能仍然引用相同的对象。我是否应该编写一个自定义方法,在反序列化后将新创

  • 我试图找到类似的问题,但找不到解决我问题的最佳方案。我在应用程序中使用SpringBoot,在代码中使用集成的solace队列。我可以使用以下代码读取solace队列中的消息: 在SpringBoot的帮助下,所有属性(如VPN)都从属性文件中提取,并创建ConnectionFactory。下面是读取消息的代码: 根据消息的类型,定位服务执行器并处理消息。它对我们完全有效。 但是,在某些情况下,我

  • 如果一封邮件被发送到我的收件箱,我会收到一条消息,并将内容插入数据库。我有一个组织。springframework。整合。果心信息如下: 现在,如果出现故障,我希望有故障安全恢复机制,我想的是将消息对象序列化到一个文件中,然后反序列化并更新到DB。 问题1。在这种情况下,如何序列化消息对象?2。除了序列化,还可以使用其他机制吗? 编辑我以前没有做过序列化,我听说类应该实现Serializable,

  • 问题内容: 此Python代码: 引发此错误信息: 谁能告诉我该怎么办才能解决上面破碎的代码中的问题,以便停止抛出错误消息? 编辑: 我做了一个打印命令来获取矩阵的内容,这就是它打印出来的内容: 对我来说,这看起来像是5行乘13列的矩阵,但是当通过脚本运行不同的数据时,行数是可变的。使用我要添加的相同数据。 编辑2:但是,脚本抛出错误。因此,我认为您的想法不能解释此处正在发生的问题。谢谢你 还有其

  • 问题内容: 我只是想输出一个先前创建的ArrayList来序列化它,以备将来存储。 但是当我这样做时,我收到运行时错误“ notSerialisableException:部门。 他们是序列化arrayList的一种特殊方法吗? 有人可以告诉我为什么我会收到此错误。 这是代码: 问题答案: 不是问题吗?你的对象是。 您需要在该对象中实现接口。

  • 问题内容: 我需要在 不使用join命令的情况下加入 列表中的元素,因此例如,如果我有列表: 输出应为: 到目前为止,这是我的代码: 但是,最后,答案最终是错误的。 我认为逻辑还可以,但是我找不到问题? 问题答案: 如果您只想打印数字而不是实际数字: