1

我想data通过索引访问一个 numpy 数组idx,但仍然保留data. 下面是一个示例,其中数组的访问顺序与原始数组中的顺序不同。

In [125]: data = np.array([2, 2.2, 2.5])

In [126]: idx=np.array([1,0])

In [127]: data[idx]
Out[127]: array([2.2, 2. ])

我希望得到 [2,2.2] 。有没有一种高效的方法来做到这一点?在我的问题设置中,我有超过一百万个浮点数的数据,以及 10 万个整数的 idx。

重要信息:如果需要,可以对数组data进行预处理。数据来自图像处理工作。例如,如果我们需要data预先排序,那么在衡量性能时不会考虑排序所消耗的时间。另一方面,idx我不希望在运行时处理太多,因为必须计算花费在它上面的时间。例如,使用 O(n log n) 算法对 idx 进行排序可能过于昂贵。

4

2 回答 2

2

创建一个布尔“掩码”

 mask = np.zeros(data.shape, bool)
 mask[idx] = True
 res = data[mask]
于 2020-09-26T14:36:19.953 回答
-1

像这样的东西?还是我没看懂?

data=np.array([2,2.2,2.5])
idx=np.array([1,0])
data[np.sort(idx)]
于 2020-09-26T10:28:16.383 回答