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

标签 list python-2.7 numpy

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

为什么可以l找到 a 的索引,但不是 b ?

最佳答案

应用 https://stackoverflow.com/a/17703076/901925 中的想法(参见相关边栏)

[np.array_equal(b,x) for x in l].index(True)

应该更可靠。它确保了正确的数组到数组的比较。

[id(b)==id(x) for x in l].index(True)如果你想确保它比较 id。

关于list - 在列表中查找numpy数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30331919/

相关文章:

java - Java中两个对象列表之间的区别

python - 如何使 input() 考虑将整个字符串插入到列表中?

python - 如何通过检查 python 子列表中的值来对列表进行排序?

python-2.7 - 如何解决 Python 2.7 上缺少 `exist_ok` 的问题?

python - Minidom:获取选中节点的所有属性?

c# - 如何将 Java 列表 XML 导入 C#

python - 读取文件python时出错

python - 将 "nan"值转换为 numpy 矩阵中不同于 0 的不同值

python - 使用 NumPy 编写一个函数来计算具有特定公差的积分

Python计数和概率