長さ 4 の配列の numpy 配列があるとします。
In [41]: arr
Out[41]:
array([[ 1, 15, 0, 0],
[ 30, 10, 0, 0],
[ 30, 20, 0, 0],
...,
[104, 139, 146, 75],
[ 9, 11, 146, 74],
[ 9, 138, 146, 75]], dtype=uint8)
私は知りたいです:
arrを含むというのは本当[1, 2, 3, 4]ですか?- それが本当なら、のどのインデックス
[1, 2, 3, 4]ですかarr?
出来るだけ早く調べたいです。
8550420arr個の要素が含まれているとします。私はいくつかの方法をチェックしましたtimeit:
- index: を取得せずにチェックするためだけに
any(all([1, 2, 3, 4] == elt) for elt in arr)。私のマシンでの10回の実行で平均15.5秒かかりました forベースのソリューション:for i,e in enumerate(arr): if list(e) == [1, 2, 3, 4]: break平均で約5.7秒かかりました
numpy ベースなど、より高速なソリューションはありますか?