擅长:python、mysql、java
<p>以下是几种执行此查找的方法:</p>
<pre><code>In [36]: A=np.array([[2,0,0],[1,1,0],[1,0,1],[0,2,0],[0,1,1],[0,0,2]])
In [37]: pattern = [0,2,0]
In [38]: np.where(np.all(pattern==A,1)) # Saullo's where
Out[38]: (array([3]),)
In [39]: A.tolist().index(pattern) # your list find
Out[39]: 3
In [40]: D={tuple(a):i for i,a in enumerate(A.tolist())} # dictionary
In [41]: D[tuple(pattern)]
Out[41]: 3
</code></pre>
<p>我使用元组作为字典键-元组是一个不可变的列表。在</p>
<p>对于这个小尺寸,字典方法是最快的,特别是如果字典可以构建一次并重复使用。即使是动态构造,它也比<code>np.where</code>更快。但是你应该用更真实的尺寸来测试它。在</p>
<p>Python字典针对速度进行了调整,因为它们是语言操作的基础。在</p>
<p><code>np.where</code>中的片段都很快,使用了编译的代码。但是,它仍然需要比较<code>A</code>和{<cd4>}的所有元素。除了字典哈希查找,还有很多工作要做。在</p>