擅长:python、mysql、java
<p><strong>编辑:</strong>删除了我原来的答案,因为这是对问题的误解。相反,请尝试:</p>
<pre><code>ii = np.where((a[:,0] - b.reshape(-1,1)) == 0)[1]
c = a[ii,:]
</code></pre>
<p>我要做的是使用广播从<code>a</code>中减去<code>b</code>的每个元素,然后在该数组中搜索表示匹配的零。这应该行得通,但是在比较float时应该小心一点,尤其是当b不是整数数组时。在</p>
<p><strong>编辑2</strong>多亏了斯文的建议,你可以试试这个稍作修改的版本:</p>
^{pr2}$
<p>它比我最初的实现要快一点。在</p>
<p><strong>编辑3</strong>目前最快的解决方案(比Sven针对大型阵列的第二个解决方案快约10倍)是:</p>
<pre><code>c = a[np.searchsorted(a[:,0],b),:]
</code></pre>
<p>假设<code>a[:,0]</code>被排序,<code>b</code>的所有值都出现在<code>a[:,0]</code>中。在</p>