長さ 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 ベースなど、より高速なソリューションはありますか?