我有一个numpy数组的列表,想检查所有数组是否相等。最快的方法是什么?
我知道numpy.array_equal函数(https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.array_equal.html),但是据我所知,这仅适用于两个数组,我想相互检查N个数组。
我还找到了此答案来测试列表中的所有元素:check if all elements in a list are identical。
但是,当我尝试接受的答案中的每个方法时,都会遇到异常(ValueError:具有多个元素的数组的真值不明确。请使用a.any()或a.all())
谢谢,
最佳答案
您可以简单地adapt a general iterator method进行数组比较
def all_equal(iterator):
try:
iterator = iter(iterator)
first = next(iterator)
return all(np.array_equal(first, rest) for rest in iterator)
except StopIteration:
return True
如果这不起作用,则意味着您的数组不相等。
演示:
>>> i = [np.array([1,2,3]),np.array([1,2,3]),np.array([1,2,3])]
>>> print(all_equal(i))
True
>>> j = [np.array([1,2,4]),np.array([1,2,3]),np.array([1,2,3])]
>>> print(all_equal(j))
False
关于python - 检查numpy数组列表是否相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37281633/