Numpy:对于一个数组中的每个元素,找到另一个数组中的索引

2023-11-22

我有两个一维数组,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 中,则会加分。


我想建议一行解决方案:

indices = np.where(np.in1d(x, y))[0]

结果是一个包含 x 数组索引的数组,该数组对应于 y 中在 x 中找到的元素。

如果需要的话,可以在没有 numpy.where 的情况下使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy:对于一个数组中的每个元素,找到另一个数组中的索引 的相关文章

随机推荐