擅长:python、mysql、java
<p>尝试使用列表理解</p>
<pre><code>In [1]: import numpy as np
In [2]: A = np.array([3,4,4,3,6])
In [3]: B = np.array([2,5,2,6,3])
In [4]: [x for x in A if not x in B]
Out[4]: [4, 4]
</code></pre>
<p>通常,列表理解比循环理解快得多。</p>
<p>得到一个等长的列表</p>
<pre><code>In [19]: map(lambda x: x if x not in B else False, A)
Out[19]: [False, 4, 4, False, False]
</code></pre>
<p>对于小数据集来说,这非常快:</p>
<pre><code>In [20]: C = np.arange(10000)
In [21]: D = np.arange(15000, 25000)
In [22]: %timeit map(lambda x: x if x not in D else False, C)
1 loops, best of 3: 756 ms per loop
</code></pre>
<p>对于大型数据集,可以尝试使用<code>multiprocessing.Pool.map()</code>来加速操作。</p>