概要
NumPy の配列同士を比較する関数について解説します。
numpy.array_equal
2つの配列が同じ形状と要素を持つ場合は True、そうでない場合は False を返します。
numpy.array_equal(a1, a2)
名前 | 型 | デフォルト値 |
---|---|---|
a1, a2 | array_like | |
配列を入力します。 |
名前 | 説明 |
---|---|
b | 配列が等しい場合に True を返します。 |
import numpy as np
x = np.array([1, 2, 3])
y = np.array([1, 2, 3])
print(np.array_equal(x, y))
x = np.array([1, 2, 3, 4])
y = np.array([1, 2, 3])
print(np.array_equal(x, y))
True False
numpy.array_equiv
numpy.array_equal()
との違いは2つの配列の形状が異なる場合はブロードキャストを試みます。
元の配列の形状が異なっていても、ブロードキャスト後に2つの配列が同じ形状と要素を持つ場合は True になります。
2つの配列が同じ形状と要素を持つ場合は True、そうでない場合は False を返します。
numpy.array_equiv(a1, a2)
名前 | 型 | デフォルト値 |
---|---|---|
a1, a2 | array_like | |
入力配列。 |
名前 | 説明 |
---|---|
out | 等しい場合は真、そうでない場合は偽。 |
x = np.array([1, 2])
y = np.array([[1, 2], [1, 2]])
print(np.array_equal(x, y))
print(np.array_equiv(x, y))
False True
numpy.equal
要素ごとに ==
による比較を行い、結果をブール配列で返します。x1 == x2
と同じです。
numpy.equal(x1, x2, /, out=None, *, where=True, casting="same_kind", order="K", dtype=None, subok=True[, signature, extobj]) = <ufunc "equal">
名前 | 型 | デフォルト値 |
---|---|---|
x1, x2 | array_like | |
同じ形状の入力配列。 |
名前 | 説明 |
---|---|
out | 出力配列、x1 と x2 の要素ごとの比較。dtype=objectが渡されない限り、通常はbool型です。x1 と x2 の両方がスカラならば、これはスカラです。 |
x = np.array([1, 2, 1, 1, 2, 2])
y = np.array([1, 2, 3, 3, 2, 2])
print(np.equal(x, y))
print(x == y)
[ True True False False True True] [ True True False False True True]
numpy.not_equal
要素ごとに !=
による比較を行い、結果をブール配列で返します。x1 != x2
と同じです。
numpy.not_equal(x1, x2, /, out=None, *, where=True, casting="same_kind", order="K", dtype=None, subok=True[, signature, extobj]) = <ufunc "not_equal">
名前 | 型 | デフォルト値 |
---|---|---|
x1, x2 | array_like | |
入力配列。 |
名前 | 説明 |
---|---|
out | x1 と x2 の要素ごとの比較を出力する配列。dtype=objectが渡されない限り、通常はbool型です。x1 と x2 の両方がスカラならば、これはスカラです。 |
x = np.array([1, 2, 1, 1, 2, 2])
y = np.array([1, 2, 3, 3, 2, 2])
print(np.not_equal(x, y))
print(x != y)
[False False True True False False] [False False True True False False]
numpy.less
要素ごとに <
による比較を行い、結果をブール配列で返します。x1 < x2
と同じです。
numpy.less(x1, x2, /, out=None, *, where=True, casting="same_kind", order="K", dtype=None, subok=True[, signature, extobj]) = <ufunc "less">
名前 | 型 | デフォルト値 |
---|---|---|
x1, x2 | array_like | |
配列を入力します。x1.shape != x2.shapeの場合、それらは共通の形状にブロードキャスト可能でなければなりません(どちらか一方の形状であってもよい)。 |
名前 | 説明 |
---|---|
out | 出力配列、x1 と x2 の要素毎の比較。dtype=objectが渡されない限り、通常はbool型。x1 と x2 の両方がスカラの場合にスカラとなります。 |
サンプルコード
x = np.array([1, 2, 1, 1, 2, 2])
y = np.array([1, 2, 3, 3, 2, 2])
print(np.less(x, y))
print(x < y)
[False False True True False False] [False False True True False False]
numpy.less_equal
要素ごとに <=
による比較を行い、結果をブール配列で返します。x1 <= x2
と同じです。
numpy.less_equal(x1, x2, /, out=None, *, where=True, casting="same_kind", order="K", dtype=None, subok=True[, signature, extobj]) = <ufunc "less_equal">
名前 | 型 | デフォルト値 |
---|---|---|
x1, x2 | array_like | |
配列を入力します。x1.shape != x2.shapeの場合、それらは共通の形状にブロードキャスト可能でなければなりません(どちらか一方の形状であってもよい)。 |
名前 | 説明 |
---|---|
out | 出力配列、x1 と x2 の要素毎の比較。dtype=objectが渡されない限り、通常はbool型。x1 と x2 の両方がスカラの場合にスカラとなります。 |
x = np.array([1, 2, 1, 1, 2, 2])
y = np.array([1, 2, 3, 3, 2, 2])
print(np.less_equal(x, y))
print(x <= y)
[ True True True True True True] [ True True True True True True]
numpy.greater
要素ごとに >
による比較を行い、結果をブール配列で返します。x1 > x2
と同じです。
numpy.greater(x1, x2, /, out=None, *, where=True, casting="same_kind", order="K", dtype=None, subok=True[, signature, extobj]) = <ufunc "greater">
名前 | 型 | デフォルト値 |
---|---|---|
x1, x2 | array_like | |
配列を入力します。x1.shape != x2.shapeの場合、それらは共通の形状にブロードキャスト可能でなければなりません(どちらか一方の形状であっても構いません)。 |
名前 | 説明 |
---|---|
out | 出力配列、x1 と x2 の要素毎の比較。dtype=objectが渡されない限り、通常はbool型。x1 と x2 の両方がスカラである場合、これはスカラです。 |
サンプルコード
x = np.array([1, 2, 1, 1, 2, 2])
y = np.array([1, 2, 3, 3, 2, 2])
print(np.greater(x, y))
print(x > y)
[False False False False False False] [False False False False False False]
numpy.greater_equal
要素ごとに >=
による比較を行い、結果をブール配列で返します。x1 >= x2
と同じです。
numpy.greater_equal(x1, x2, /, out=None, *, where=True, casting="same_kind", order="K", dtype=None, subok=True[, signature, extobj]) = <ufunc "greater_equal">
名前 | 型 | デフォルト値 |
---|---|---|
x1, x2 | array_like | |
配列を入力します。x1.shape != x2.shapeの場合、それらは共通の形状にブロードキャスト可能でなければなりません(どちらか一方の形状であっても構いません)。 |
名前 | 説明 |
---|---|
out | 出力配列、x1 と x2 の要素毎の比較。dtype=objectが渡されない限り、通常はbool型。x1 と x2 の両方がスカラである場合、これはスカラです。 |
サンプルコード
x = np.array([1, 2, 1, 1, 2, 2])
y = np.array([1, 2, 3, 3, 2, 2])
print(np.greater(x, y))
print(x >= y)
[False False False False False False] [ True True False False True True]
numpy.isclose
要素ごとに2つの値が近いかどうかを比較し、結果をブール配列で返します。浮動小数点演算は丸め誤差が発生するため、==
や !=
を使ってある値と厳密に一致するかどうかの判定は基本的に意図通りには機能しません。
浮動小数点演算の結果がある値に等しいかどうか判定したい場合にこの関数を使用します。
numpy.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)
名前 | 型 | デフォルト値 |
---|---|---|
a, b | array_like | |
比較する配列を入力します。 | ||
rtol | float | 1e-05 |
相対的な許容範囲パラメータ(注意事項を参照のこと)。 | ||
atol | float | 1e-08 |
絶対許容差パラメータ(注意事項を参照してください). | ||
equal_nan | bool | False |
NaNを等しく比較するかどうかを指定します。Trueの場合、a のNaNは出力配列の b のNaNと等しいとみなされます。 |
名前 | 説明 |
---|---|
y | a と b が与えられた許容範囲内で等しい場合のブーリアン配列を返します。a と b の両方がスカラ値の場合、単一のブール値を返します。 |
x = np.array([0.1, 0.2, 0.3])
y = np.array([0.4, 0.5, 0.6])
z1 = x + y
z2 = np.array([0.5, 0.7, 0.9])
print(z1 == z2)
print(np.isclose(z1, z2))
[ True True False] [ True True True]
numpy.allclose
要素ごとに2つの値が近いかどうかを比較し、すべての値が近い場合は True を返します。浮動小数点演算の結果がある値に等しいかどうか判定したい場合にこの関数を使用します。
numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)
名前 | 型 | デフォルト値 |
---|---|---|
a, b | array_like | |
比較する配列を入力します。 | ||
rtol | float | 1e-05 |
相対的な許容範囲パラメータ(注釈を参照してください)。 | ||
atol | float | 1e-08 |
絶対許容差パラメータ(注意事項を参照してください)。 | ||
equal_nan | bool | False |
NaNを等しく比較するかどうか。Trueの場合、a のNaNは出力配列の b のNaNと等しいとみなされます。 |
名前 | 説明 |
---|---|
allclose | 2つの配列が与えられた許容範囲内で等しい場合はTrueを返し、そうでない場合はFalseを返します。 |
x = np.array([0.1, 0.2, 0.3])
y = np.array([0.4, 0.5, 0.6])
z1 = x + y
z2 = np.array([0.5, 0.7, 0.9])
print(np.all(z1 == z2))
print(np.allclose(z1, z2))
False True
コメント