python - allclose() 和 array_equal() 有什么区别?

标签 python numpy

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/

相关文章:

python - 使用 Python zip 函数

python - Matplotlib 所以日志轴在指定点只有次要刻度线标签。还可以更改颜色栏中刻度标签的大小

python - Groupby 与 TimeGrouper 'backwards'

python - 使用 numpy 进行高效迭代

python - AMQPConnectionError 使用 Pika 和 RabbitMQ 与 Asyncore - 为什么?

python 和 postgres 总是共享一个 CPU 内核?

python - 如何防止selenium中的css和img下载

python - 为什么有分号;在 matplotlibs plot() 函数之后?

python - 矢量化misc.imresize()时出现广播错误

python - 使用 itertools.combinations 的最快方法