假设我有一个长度为 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]
? - 如果是真的 in 的索引是
[1, 2, 3, 4]
多少arr
?
我想尽快找到它。
假设arr
包含 8550420 个元素。我检查了几种方法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 的解决方案?