Python で 2つの配列を比較する

Muhammad Waiz Khan 2023年1月30日
  1. Python で numpy.array_equal() メソッドを使用して 2つの配列を比較する
  2. Python で numpy.allclose() メソッドを使用して 2つの配列を比較する
  3. Python で numpy.array_equiv() メソッドを使用して 2つの配列を比較する
  4. Python で == 演算子と numpy.all() メソッドを使用して 2つの配列を比較する
Python で 2つの配列を比較する

このチュートリアルでは、Python で 2つの配列を比較し、それらが等しいかどうかを確認するためのさまざまな方法を調べます。2つの配列は、それらの次元と値が同じである場合にのみ等しくなります。2つの配列の値が同じであるが、それらのシーケンスが同じでない場合、配列は等しいとは見なされません。

次の方法を使用して、Python で 2つの配列が等しいかどうかを確認できます。

Python で numpy.array_equal() メソッドを使用して 2つの配列を比較する

numpy.array_equal(a1, a2, equal_nan=False) は、入力として 2つの配列 a1a2 を取り、両方の配列が同じ形状と要素を持っている場合は True を返し、そうでない場合はメソッドは False を返します。equal_nan= キーワード引数のデフォルト値は False であり、メソッドで 2つの NaN 値を等しいと見なす場合は、True に設定する必要があります。

以下のサンプルコードは、numpy.array_equal() メソッドを使用して Python で 2つの配列を比較する方法を示しています。

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() メソッドを使用して 2つの配列を比較する

numpy.allclose(a1, a2, rtol=1e-05, atol=1e-08, equal_nan=False) メソッドは、配列 a1a2 を入力として受け取り、の各要素が Trueの場合はTrue を返します。a1a2 の対応する要素と等しいか、それらの差が許容値内にあります。

許容値は、a2rtol、および atol 引数を使用して計算されます。

atol + rtol * absolute(a2)

numpy.allclose() メソッドは、最終的な配列が期待される配列と等しいかどうかを確認する計算に役立ちます。numpy.allclose() メソッドを使用して、Python で 2つの配列を次のように比較できます。

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

上記のサンプルコードに示されているように、2つの値の 0.00001 の差はデフォルトで無視されます。atolrtol の値を変更して、許容値を増やすことができます。

Python で numpy.array_equiv() メソッドを使用して 2つの配列を比較する

numpy.array_equiv(a1, a2) メソッドは、配列 a1a2 を入力として受け取り、配列の形状と要素の両方が同じ場合は True を返します。それ以外の場合は、False を返します。

両方の配列を numpy.array_equiv() メソッドに渡して、Python で比較できます。以下のサンプルコードは、numpy.array_equal() メソッドを使用して、Python で 2つの配列が等しいかどうかを確認する方法を示しています。

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() メソッドを使用して 2つの配列を比較する

== 演算子を配列とともに使用すると、両方の配列と同等の形状の配列が返されます。返される配列には、両方の配列の要素がインデックスで等しい場合はインデックスに True が含まれ、そうでない場合は配列がそのインデックスに False が含まれています。

各要素の代わりに 2つの配列を比較したいので、== 演算子を使用して numpy.all() メソッドを使用できます。numpy.all() メソッドは、指定された軸に沿ったすべての入力配列要素が True の場合、True を返します。それ以外の場合は、False を返します。

注意
このメソッドは、両方の配列が空の場合、または 1つの配列の長さが 1 の場合に True を返します。また、両方の配列の形状が同じでない場合もエラーが発生します。そのため、上記の方法を優先する必要があります。

以下のサンプルコードは、== 演算子と numpy.all() メソッドを使用して Python で 2つの配列を比較する方法を示しています。

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