我正在实现一些搜索算法,numpy其中一个步骤是检查向量是否在矩阵中(作为行)。我以前用过np.isin,但我突然很好奇 python 关键字是否in有效。因此我对其进行了测试,发现它确实有效。
由于我没有找到任何 python 接口in(例如__add__for+或__abs__for abs),我相信in通过使用标准迭代器逻辑在 python 中进行硬连接,因此它应该比 -providednumpy慢np.isin。但在我做了一些测试之后,令人难以置信的是:
>>> a = np.int8(1)\n>>> A = np.zeros(2**24, \'b\')\n>>> %timeit a in A\n>>> %timeit np.isin(a, A)\n21.7 ms \xc2\xb1 1.58 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 10 loops each)\n310 ms \xc2\xb1 20.4 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 1 loop each)\n …Run Code Online (Sandbox Code Playgroud)