在 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