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)