在列表中查找numpy数组的索引

时间:2015-05-19 17:07:58

标签: list python-2.7 numpy

有人可以解释为什么会发生以下情况吗?我的用例是我有一个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

2 个答案:

答案 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