在 Python 中比较两个数组
- 
          
            在 Python 中使用 numpy.array_equal()方法比较两个数组
- 
          
            在 Python 中使用 numpy.allclose()方法比较两个数组
- 
          
            在 Python 中使用 numpy.array_equiv()方法比较两个数组
- 
          
            在 Python 中使用 ==运算符和numpy.all()方法比较两个数组
 
在本教程中,我们将研究各种方法来比较 Python 中的两个数组并检查它们是否相等。仅当它们的尺寸和值相同时,这两个数组才相等。如果两个数组具有相同的值,但是它们的顺序不相同,则这些数组将不被视为相等。
我们可以使用以下方法在 Python 中检查两个数组是否相等:
在 Python 中使用 numpy.array_equal() 方法比较两个数组
numpy.array_equal(a1, a2, equal_nan=False) 将两个数组 a1 和 a2 作为输入,如果两个数组具有相同的形状和元素,则返回 True,否则该方法返回 False。equal_nan= 关键字参数的默认值为 False,并且如果我们希望该方法将两个 NaN 值视为相等,则必须将其设置为 True。
下面的示例代码演示了如何使用 numpy.array_equal() 方法在 Python 中比较两个数组。
import numpy as np
a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
print(np.array_equal(a1, a1))
print(np.array_equal(a1, a2))
输出:
True
False
在 Python 中使用 numpy.allclose() 方法比较两个数组
numpy.allclose(a1, a2, rtol=1e-05, atol=1e-08, equal_nan=False) 方法将数组 a1 和 a2 作为输入,如果 a1 的每个元素都等于 a2 的相应元素,或者它们的差值在容差范围内,则返回 True。
公差值使用 a2,rtol 和 atol 参数计算:
atol + rtol * absolute(a2)
numpy.allclose() 方法在我们要检查最终数组是否等于期望数组的计算中很有用。我们可以使用 numpy.allclose() 方法通过以下方式比较 Python 中的两个数组:
import numpy as np
a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])
print(np.allclose(a1, a2))
print(np.allclose(a3, a2))
输出:
False
True
如上面的示例代码所示,默认情况下将忽略两个值之间的差异 0.00001。我们可以更改 atol 和 rtol 的值以增加公差值。
在 Python 中使用 numpy.array_equiv() 方法比较两个数组
numpy.array_equiv(a1, a2) 方法将数组 a1 和 a2 作为输入,如果两个数组的形状和元素相同,则返回 True。否则,返回 False。
我们可以将两个数组都传递给 numpy.array_equiv() 方法,以便在 Python 中进行比较。下面的示例代码演示了如何使用 numpy.array_equal() 方法来检查 Python 中两个数组是否相等。
import numpy as np
a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])
print(np.array_equiv(a1, a2))
print(np.array_equiv(a3, a2))
输出:
False
False
在 Python 中使用 == 运算符和 numpy.all() 方法比较两个数组
与数组一起使用时,== 运算符将返回形状与两个数组均等的数组,如果两个数组中的元素在该索引中相等,则返回的数组在索引处包含 True,否则数组将返回在该索引处包含 False。
由于我们要比较两个数组而不是每个元素,因此可以将 numpy.all() 方法与 == 运算符一起使用。如果沿着给定轴的所有输入数组元素均为 True,则 numpy.all() 方法将返回 True;否则,返回 False。
1,则此方法返回 True。如果两个数组的形状不相同,也会引发错误;这就是为什么必须首选上述方法的原因。下面的示例代码演示了如何使用 == 运算符和 numpy.all() 方法来比较 Python 中的两个数组。
import numpy as np
a1 = np.array([1, 2, 4, 6, 7])
a2 = np.array([1, 3, 4, 5, 7])
a3 = np.array([1, 3, 4.00001, 5, 7])
print((a1 == a2).all())
print((a3 == a2).all())
输出:
False
False