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())
谢谢,
您可以简单地采用通用迭代器方法来进行数组比较
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)
| 归档时间: |
|
| 查看次数: |
3112 次 |
| 最近记录: |