我有兩個數組,a1和a2。假設len(a2) >> len(a1)
,並且a1是a2的子集。返回兩個numpy數組之間的公共元素索引
我想快速返回a1中所有元素的a2索引。這樣做的時間密集方式顯然是:
from operator import indexOf
indices = []
for i in a1:
indices.append(indexOf(a2,i))
這當然需要很長時間,其中a2很大。我也可以使用numpy.where()來代替(雖然a1中的每個條目在a2中只會出現一次),但我不相信它會更快。我還可以穿越大陣只有一次:
for i in xrange(len(a2)):
if a2[i] in a1:
indices.append(i)
但我敢肯定有一個更快,更「numpy的」的方式 - 我通過numpy的方法列表看去,卻什麼也找不到合適的。
提前許多感謝,
d
我比較你的解決方案戴夫柯比的上面,這對於len(a2)==約12347424,len(a1)== 1338約爲1.35X更快,所以這個解決方案得到了我的投票 - 謝謝! – Dave 2010-02-25 11:57:37
對於讀這個的人:看起來像'setmember1d'自numpy 1.4以來已被重命名爲'in1d'。 – 2012-10-16 16:26:07
@AlokSinghal感謝您的支持! – 2016-06-10 18:59:45