up:: Python
numpy二次元配列内に一次元配列が完全に存在するか
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([2, 3])
result = np.any(np.apply_along_axis(lambda x: np.array_equal(x, b), 1, a))
print(result)
二次元配列を回して一次元配列ごとに判定するコード。
np.apply_along_axis()
を使用。第二引数1
に従い、第二次元ごとに第三引数a
を分割して、第一引数に指定した関数を適用する。
今回指定している関数はnp.array_equal()
。numpy配列が完全に同一かどうかを調べる。これで調べたい奴と比較する。
外側のnp.any
は一個でもtrue
があるとtrue
を返す関数。ちなみに全部trueの時trueを返すのはnp.all
。
注意点として、以下のコードは間違い。
以下のnp.isin
は要素ごとに比較して比較対象と同じタプルを返すので、b = np.array([2, 3])
でもtrueになってしまう。
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([3, 4])
result = np.all(np.isin(b, a))
print(result)