我有一些問題。我想從另一個列表中減去一個列表。爲此,我使用從Python數組到numpy數組的轉換。但它失敗了。 例如,wealthRS
是列表。我創建一個副本: wealthRSCopy = wealthRS
然後我想抽象,但它是錯誤的(unsuppoerted operand types
) 這裏是截圖。 Python Numpy不受支持的操作數類型'list' - 'list'
-2
A
回答
1
編輯與答案:
您最初的名單有列表作爲它們的元素。這些列表的長度不同,因此將NumPy數組轉換爲dtype對象的數組,即數組的元素是列表。看到這裏:https://stackoverflow.com/a/33987165/4244912
當減去NumPy數組,它做元素減法,也就是說,它從另一個元素的相應元素減去一個數組的元素(在你的情況是列表),這就是爲什麼你得到你的錯誤信息(例如,類型'列表'不支持減法)。
簡單的例子:
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.
我在這裏重現你的錯誤:
In [35]: B, C = np.array([[1,2],[3]]), np.array([[4,5],[6]]) # Note the differing sizes of the nested lists.
In [36]: C-B
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-36-f4554df570db> in <module>()
----> 1 C-B
TypeError: unsupported operand type(s) for -: 'list' and 'list'
所以你需要通過使每個列表與最初的名單,以確保您可以三立投你的列表,以數組等長。然後他們應該被轉換爲NumPy數組,並且使用float類型,並按照您期望的方式行事。
原帖
我不認爲你的代碼中創建一個副本,它看起來像你還在減去列表,而不是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]]])
我不明白爲什麼你的減法不工作,除非數組元素是列表本身,但我不知道如何發生。
相關問題
- 1. TypeError:^:'list'和'list'的不受支持的操作數類型
- 2. Python scipy:**或pow():'list'和'list'不支持的操作數類型
- 3. 「在cpython中用於/:'list'和'list'的不受支持的操作數類型
- 4. TypeError:不支持的操作數類型爲 - :'list'和'list'
- 5. Python - 不支持的操作數類型爲%:'list'和'int'
- 6. 不支持的操作數類型爲+:'int'和'list'
- 7. 不支持的操作數類型(s) - =:'list'和'int'
- 8. TypeError:不支持的操作數類型爲 - :'int'和'list'
- 9. 「不支持的操作數類型爲**或pow():'list'和'int'」
- 10. Cinema Booking Program:TypeError:不支持的操作數類型爲 - :'list'和'int'
- 11. TypeError:第15行Pow:'list'和'int'的不受支持的操作數類型
- 12. TypeError:**或pow():'int'和'list'不支持的操作數類型
- 13. 不支持的操作數類型爲/:'list'和'list'Python
- 14. arange:TypeError:不支持的操作數類型爲 - :'list'和'int'
- 15. Python的類型錯誤不受支持的操作數類型
- 16. 不受支持的操作數類型
- 17. python不受支持的操作數類型問題
- 18. 不能在不支持的操作數類型中找到錯誤 - :'list'和'int'
- 19. TypeError:不支持的操作數類型爲/:'float'和'list',無法解析
- 20. Python:Array減矩陣 - TypeError:不支持的操作數類型爲 - :'int'和'list'
- 21. tensorflow sess.run返回List而不是float32導致TypeError:不支持的操作數類型爲+ =:'float'和'list'
- 22. Python TypeError不受支持的操作數類型爲%:'file'和'unicode'
- 23. TypeError:不受支持的操作數類型-python socket
- 24. 不支持的操作數類型爲 - :'list'和'int':如何比較列表項?
- 25. 什麼導致「不支持的操作數類型爲//:'list'和'int'」?
- 26. abs()的壞操作數類型:'list'
- 27. 不受支持的操作數類型: 'datetime.timedelta' 和 'INT'
- 28. TypeError不受支持的操作數類型爲%:Float和NoneType
- 29. 不受支持的操作數類型爲*:'numpy.ndarray'和'numpy.float64'
- 30. 如何在Python中調試「TypeError:不受支持的操作數類型」?
請發帖實際的代碼和輸出,截圖沒多大用處。 – SiHa
你的意思是矢量差異? http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.subtract.html – msw