即使两个数组相同,Numpy 也会返回 False?

Numpy returning False even though both arrays are the same?

根据我对 numpy 的理解,np.equal([x, prod]) 命令逐个元素地比较数组,returns 如果它们相等,则每个元素都为真。但是每次执行命令时,第一次比较都是 returns False 。另一方面,如果我将两个数组复制粘贴到命令中,它 returns 对两者都是正确的,如您在屏幕截图中所见。那么,为什么两者会有区别呢?

您不能比较浮点数,因为它们只是一个近似值。当您通过硬编码值比较它们时,它们将相等,因为它们以完全相同的方式近似。但是一旦你对它们应用了一些数学运算,就不再可能检查两个浮点数是否相等。

比如这个

a = 0

for i in range(10):
    a += 1/10

print(a)
print(a == 1)

会给你 0.9999999999False,即使 (1/10) * 10 = 1.

要比较浮点值,您需要将两个值与一个小的增量值进行比较。换句话说,检查它们是否只是一个非常小的值。例如

a = 0

for i in range(10):
    a += 1/10

delta = 0.00000001
print(a)
print(abs(a - 1) < delta)

会给你True.

对于 numpy,如果您只想要 True 或 False 值,可以使用 numpy.isclose to get a mask or numpyp.allclose