Numpy 有以下方法:
allclose()
- 假设数组的形状相同以及值比较的容差
array_equal()
- 检查形状和元素值,无公差(值必须完全相等)
我似乎找不到它们之间的任何区别。有例子吗?
最佳答案
np.allclose
设计用于 float 数组。浮点计算具有固有的精度损失,因此您经常会发现本应相等但相差很小的数字。
另一方面,np.array_equal
设计用于整数数组,并且只检查是否完全相等。
考虑以下示例,该示例生成一个包含 100 个 float 的数组,将其除以 1.5,然后再乘以 1.5。由于精度损失,阵列不再完全相等,但仍然在非常小的公差范围内接近。
arr = np.random.rand(1000)
arr2 = arr / 1.5
arr2 = arr2 * 1.5
print(np.array_equal(arr, arr2))
# False
print(np.allclose(arr, arr2, atol=1e-16, rtol=1e-16))
# True
关于python - allclose() 和 array_equal() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698908/