在 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