擅长:python、mysql、java
<p>正如Joe Kington所说,<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.searchsorted.html" rel="noreferrer">searchsorted()</a>可以非常快速地搜索元素。要处理不在x中的元素,可以使用原始y检查搜索结果,并创建一个屏蔽数组:</p>
<pre><code>import numpy as np
x = np.array([3,5,7,1,9,8,6,6])
y = np.array([2,1,5,10,100,6])
index = np.argsort(x)
sorted_x = x[index]
sorted_index = np.searchsorted(sorted_x, y)
yindex = np.take(index, sorted_index, mode="clip")
mask = x[yindex] != y
result = np.ma.array(yindex, mask=mask)
print result
</code></pre>
<p>结果是:</p>
<pre><code>[-- 3 1 -- -- 6]
</code></pre>