Tho*_*rth 5 python arrays performance numpy python-2.7
import numpy as np
a=np.random.randint(0,200,100)#rand int array
b1=np.random.randint(0,100,50)
b2=b1**3
c=[]
我有一个问题我认为应该很容易但找不到解决方案,我想在两个数组中找到匹配的值,然后使用其中一个的索引在另一个数组中查找值
for i in range(len(a)):
    for j in range(len(b1)):
         if b1[j]==a[i]:
             c.append(b2[j])
c=np.asarray(c)
显然上面的方法确实有效,但它很慢,这只是一个例子,在我实际做的工作中,b1,b2都是超过10,000个元素.
更快的解决方案?
np.in1d(b1, a)返回一个布尔数组,指示是否b1找到每个元素a.
如果你想获得与和b2中常见值的索引相对应的值,你可以使用布尔数组来索引:ab1b2
b2[np.in1d(b1, a)]
随着for循环被推到NumPy内部例程的水平,使用此函数应该快得多.
| 归档时间: | 
 | 
| 查看次数: | 289 次 | 
| 最近记录: |