wal*_*ol1 6 numpy list python-2.7
有人可以解释为什么发生以下情况?我的用例是我有一个python列表,其元素都是numpy ndarray对象,我需要搜索列表以查找特定ndarray obj的索引.
最简单的例子:
>>> 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()
Run Code Online (Sandbox Code Playgroud)
为什么可以l找到索引a,但不是b?
在/sf/answers/1239215351/中应用这个想法(参见相关方面)
[np.array_equal(b,x) for x in l].index(True)
Run Code Online (Sandbox Code Playgroud)
应该更可靠.它确保了正确的数组到阵列比较.
或者,[id(b)==id(x) for x in l].index(True)如果您想确保它比较ID.