У меня есть некоторые проблемы. Я хочу вычесть один список из другого. Для этого я использую преобразование из массива python в массив numpy. Но это провалилось. Например, wealthRS
- это список. Я создаю копию: wealthRSCopy = wealthRS
Тогда я хочу использовать, но это ошибка (unsuppoerted operand types
) Вот скриншот. Python Numpy неподдерживаемые типы операндов 'list' - 'list'
ответ
Редактировать с ответом:
Вы первоначальные списки есть списки, как и их элементов. Эти списки имеют разную длину, поэтому приведение в массив 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 с dtype 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. Ошибка: неподдерживаемые типы операндов
- 2. неподдерживаемые типы операндов
- 3. TypeError-неподдерживаемые типы операндов
- 4. Неподдерживаемые типы операндов в
- 5. Python: Матрица вычитания Матрица - ТипError: неподдерживаемые типы операндов для -: 'int' и 'list'
- 6. неподдерживаемые типы операндов в питона
- 7. Фатальная ошибка: неподдерживаемые типы операндов
- 8. неподдерживаемые типы операндов в Laravel
- 9. Неустранимая ошибка: Неподдерживаемые типы операндов
- 10. URL() Проблема: неподдерживаемые типы операндов
- 11. Python numpy list filtering
- 12. Python - List List List List
- 13. Неподдерживаемые типы операндов, запятые с поплавками
- 14. Python: "неподдерживаемые типы операндов для +: 'long' и 'numpy.float64'"
- 15. Python numpy array vs list
- 16. Неустранимая ошибка: неподдерживаемые типы операндов в ..?
- 17. неподдерживаемые типы операндов для *: «Поплавок» и «десятичный»
- 18. неподдерживаемые типы операндов в form.inc Друпала 7
- 19. PHP JSON-конвертер «Неподдерживаемые типы операндов»
- 20. Неподдерживаемые типы операндов, когда значение целое
- 21. PHP - Неустранимая ошибка: Неподдерживаемые типы операндов
- 22. неподдерживаемые типы операндов после преобразования PDO
- 23. Неустранимая ошибка: неподдерживаемые типы операндов - PHP
- 24. Почему возникает ошибка «Неподдерживаемые типы операндов для /»?
- 25. Неустранимая ошибка: Неподдерживаемые типы операндов в 32
- 26. Laravel 5.1 eloquent Неподдерживаемые типы операндов
- 27. Неподдерживаемые типы операндов error/Carriage return - PHP
- 28. Python TypeError: неподдерживаемые типы операндов для +: 'tag' и 'str'
- 29. TypeError: неподдерживаемый тип операндов для - =: 'list' и 'list'
- 30. ТипError: неподдерживаемый тип операндов для -: 'list' и 'list'
Пожалуйста, размещайте фактический код и вывод, скриншоты не очень полезны. – SiHa
Вы имеете в виду разницу в значении? http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.subtract.html – msw