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]]])
我不明白為什么你的減法不起作用,除非數組元素本身是列表,但我不知道怎么會這樣。在
總結
以上是生活随笔為你收集整理的python支持list类型吗_Python Numpy不支持的操作数类型“list”“list”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10用户账户控制怎么取消 win1
- 下一篇: pythonnamedtuple定义类型