我有两个一维数组x和y,其中一个比另一个小。我想找到y中每个元素在x中的索引。
我发现了两种朴素的方法来实现这个目标,第一种方式速度较慢,第二种方式占用内存较高。
较慢的方式
indices= []
for iy in y:
indices += np.where(x==iy)[0][0]
内存占用过多
xe = np.outer([1,]*len(x), y)
ye = np.outer(x, [1,]*len(y))
junk, indices = np.where(np.equal(xe, ye))
有没有更快或者内存占用更少的方法?理想情况下,搜索应该利用这样一个事实:我们在一个列表中搜索的不是一个,而是很多东西,因此稍微更容易并行化。如果你不假设 y 的每个元素都在 x 中,那就更好了。