我有两个数组,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