擅长:python、mysql、java
<p><strong>选择最快的方法</strong></p>
<p>这个问题的答案提供了一个很好的组合方法来替换numpy数组中的元素。让我们看看,哪一个最快。在</p>
<p><em>TL;DR:</em>Numpy索引是赢家</p>
<pre><code> def meth1(): # suggested by @Slam
for old, new in Y:
Xold[Xold == old] = new
def meth2(): # suggested by myself, convert y_dict = dict(Y) first
[y_dict[i] if i in y_dict.keys() else i for i in Xold]
def meth3(): # suggested by @Eelco Hoogendoom, import numpy_index as npi first
npi.remap(Xold, keys=Y[:, 0], values=Y[:, 1])
def meth4(): # suggested by @Brad Solomon, import pandas as pd first
pd.Series(Xold).map(pd.Series(Y[:, 1], index=Y[:, 0])).values
# suggested by @jdehesa. create Xnew = Xold.copy() and index
# idx = np.searchsorted(Xold, Y[:, 0]) first
def meth5():
Xnew[idx] = Y[:, 1]
</code></pre>
<p>结果不足为奇</p>
^{pr2}$
<p>因此,好的旧列表理解是第二快的,而获胜的方法是结合<code>searchsorted()</code>的numpy索引。在</p>