python支持list类型吗_Python Numpy不支持的操作数类型“list”“list”

编辑答案:

初始列表的元素是列表。这些列表的长度不同,因此强制转换为NumPy数组将生成dtype对象的数组,即数组的元素是列表。请看这里:https://stackoverflow.com/a/33987165/4244912

当减去NumPy数组时,它执行元素级减法,也就是说,它从另一个数组中的相应元素中减去一个数组的元素(在您的例子中是列表),这就是为什么您会收到错误消息(即“list”类型不支持减法)。在

简单示例:In [1]: import numpy as np

In [2]: A=np.array([[1,2],[],[1,2,3,4]])

In [3]: A[0]

Out[3]: [1, 2]

In [4]: A[0].append(3) #< The first element is a list!

In [5]: A

Out[5]: array([[1, 2, 3], [], [1, 2, 3, 4]], dtype=object) #< The first element (a list) has changed.

我在这里重现你的错误:

^{pr2}$

因此,您需要确保通过使每个列表的初始列表长度相等,可以将列表合理地转换为数组。然后它们应该被强制转换成dtype为float的NumPy数组,并按照您期望的方式进行操作。在

原帖

我不认为您的代码片段创建了一个副本,而且看起来您仍然在减去列表,而不是numpy数组。在

如果wealthRS是一个列表,那么wealthRSCopy = wealthRS会创建一个我认为是浅拷贝的东西:列表引用相同的元素,因此更改一个元素将更改另一个元素。在

例如:In [1]: a = [1,2,3]

In [2]: b = a

In [3]: b[0] = 10 # change the first item in 'b'

In [4]: b

Out[4]: [10, 2, 3]

In [5]: a # < 'a' has changed too!

Out[5]: [10, 2, 3]

使用彼此独立的切片创建副本。在In [6]: c = a[:] # < slice containing the whole list

In [6]: c[0] = 15

In [7]: a

Out[7]: [10, 2, 3]

In [8]: c

Out[8]: [15, 2, 3]

编辑:关于你剩下的问题:你能帮我试试这个吗?在In [1]: import numpy as np

In [2]: a, b = [[[1]]], [[[3]]]

In [3]: np.array(b) - np.array(a)

Out[3]: array([[[2]]])

我不明白为什么你的减法不起作用,除非数组元素本身是列表,但我不知道怎么会这样。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值