在保留其顺序的同时访问大型 numpy 数组
Accessing a large numpy array while preserving its order
我想通过索引 idx
访问一个 numpy 数组 data
,但仍保留 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]。有没有一种高效的方法来做到这一点?在我的问题设置中,我有超过一百万个浮点数的数据,而 idx 有 10 万个整数。
重要信息:数组data
可以根据需要进行预处理。数据来自图像处理工作。例如,如果我们需要预先对 data
进行排序,那么在衡量性能时就不会考虑排序所消耗的时间。另一方面,idx
是我不想在运行时处理太多的东西,因为必须计算在它上面花费的时间。例如。 使用复杂度为 O(n log n) 的算法对 idx 进行排序可能过于昂贵。
是这样的吗?还是我没听懂?
data=np.array([2,2.2,2.5])
idx=np.array([1,0])
data[np.sort(idx)]
创建布尔值'mask'
mask = np.zeros(data.shape, bool)
mask[idx] = True
res = data[mask]
我想通过索引 idx
访问一个 numpy 数组 data
,但仍保留 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]。有没有一种高效的方法来做到这一点?在我的问题设置中,我有超过一百万个浮点数的数据,而 idx 有 10 万个整数。
重要信息:数组data
可以根据需要进行预处理。数据来自图像处理工作。例如,如果我们需要预先对 data
进行排序,那么在衡量性能时就不会考虑排序所消耗的时间。另一方面,idx
是我不想在运行时处理太多的东西,因为必须计算在它上面花费的时间。例如。 使用复杂度为 O(n log n) 的算法对 idx 进行排序可能过于昂贵。
是这样的吗?还是我没听懂?
data=np.array([2,2.2,2.5])
idx=np.array([1,0])
data[np.sort(idx)]
创建布尔值'mask'
mask = np.zeros(data.shape, bool)
mask[idx] = True
res = data[mask]