有人可以解释为什么会发生以下情况吗?我的用例是我有一个python列表,其元素都是numpy ndarray对象,我需要搜索列表以查找特定ndarray对象的索引。
最简单的例子:
>>> 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
?
答案 0 :(得分:7)
在plunker中应用这个想法(参见相关方面)
$scope.$on('myEvent', function(event, myData){...})
应该更可靠。它确保了正确的数组到阵列比较。
或[np.array_equal(b,x) for x in l].index(True)
如果您想确保它比较ID。
答案 1 :(得分:0)
我们的想法是将numpy数组转换为列表并将问题转换为在其他列表中查找列表:
def find_array(list_of_numpy_array,taregt_numpy_array):
out = [x.tolist() for x in list_of_numpy_array].index(taregt_numpy_array.tolist())
return out