Может кто-нибудь объяснить, почему происходит следующее? Мой вариант использования заключается в том, что у меня есть список python, чьи элементы - все numpy ndarray objects, и мне нужно выполнить поиск по списку, чтобы найти индекс конкретного ndarray obj.Найти индекс массива numpy в списке
Простейшее Пример:
>>> import numpy as np
>>> a,b = np.arange(0,5), np.arange(1,6)
>>> a
array([0, 1, 2, 3, 4])
>>> b
array([1, 2, 3, 4, 5])
>>> l = list()
>>> l.append(a)
>>> l.append(b)
>>> l.index(a)
0
>>> l.index(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Почему l
найти индекс a
, но не b
?
Что происходит в этом коде? – WuJo
Обычно эта ошибка возникает, когда вы пытаетесь выполнить булевую операцию Python ('in', 'if') в булевом массиве 'numpy' (или списке). например 'if [True, False ...]:'. Здесь я подозреваю, что один идентификатор 'index' соответствует идентификаторам, другой пытается проверить' == '. Кажется, зависит от того, как создается список. – hpaulj
Операции с индексными операциями с массивами 'numpy', вероятно, не очень хорошая идея. – hpaulj