检查 numpy 数组列表是否相等

Eng*_*tan 5 python arrays numpy

我有一个 numpy 数组列表,想要检查所有数组是否相等。做到这一点最快的方法是什么?

我知道 numpy.array_equal 函数(https://docs.scipy.org/doc/numpy-1.10.0/reference/ generated/numpy.array_equal.html),但据我所知,这仅适用于两个数组,我想相互检查 N 个数组。

我还找到了这个答案来测试列表中的所有元素:检查列表中的所有元素是否相同。但是,当我尝试接受的答案中的每种方法时,我得到一个异常(ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all())

谢谢,

mir*_*ulo 3

您可以简单地采用通用迭代器方法来进行数组比较

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
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,则意味着您的数组不相等

演示

>>> 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
Run Code Online (Sandbox Code Playgroud)