比较两个NumPy数组相等性的最简单方法是什么(相等性定义为:A=B当且仅当对于所有索引i:A[i] == B[i]
)?
只需使用==
就可以得到一个布尔数组:
>>> numpy.array([1,1,1]) == numpy.array([1,1,1])
array([ True, True, True], dtype=bool)
是否必须对此数组的元素执行and
操作才能确定这些数组是否相等,或者是否有更简单的方法进行比较?
发布于 2012-05-14 19:00:59
(A==B).all()
解决方案非常简洁,但是有一些用于此任务的内置函数。即array_equal
、allclose
和array_equiv
。
(不过,使用timeit
进行的一些快速测试似乎表明(A==B).all()
方法是最快的,这有点奇怪,因为它必须分配一个全新的数组。)
发布于 2019-10-07 06:46:01
通常两个数组会有一些小的数值误差,
您可以使用numpy.allclose(A,B)
,而不是(A==B).all()
。这将返回布尔值True/False
发布于 2020-05-26 01:00:04
现在使用np.array_equal
。来自文档:
np.array_equal([1, 2], [1, 2])
True
np.array_equal(np.array([1, 2]), np.array([1, 2]))
True
np.array_equal([1, 2], [1, 2, 3])
False
np.array_equal([1, 2], [1, 4])
False
https://stackoverflow.com/questions/10580676
复制相似问题