我使用下面的方法屏蔽了排序的一维 numpy 数组(遵循此处提出的解决方案):
def get_from_sorted(sorted,idx):
mask = np.zeros(sorted.shape, bool)
mask[idx] = True
return sorted[mask]
python 方法在对索引进行屏蔽后返回数组idx。例如,如果 Sorted=np.array([0.1,0.2,0.3.0.4,0.5])和 idx= np.array([4,0,1]),则该方法get_from_sorted应该返回np.array([0.1,0.2,0.5])(注意原始数组中的顺序被保留。)
问题:我需要获取屏蔽后数组中项目的索引与原始列表中项目的索引之间的映射。在上面的例子中,这样的映射是
0 -> 0
1 -> 1
2 -> 5
因为 0.1、0.2 和 0.5 分别位于 中的第 0 位、第 1 位和第 5 位sorted。
如何有效地对该映射进行编程?
对效率的要求:效率是我解决问题的关键。这里,“idx”和“sorted”都是一个包含 100 万个元素的一维数组,idx 是一个包含约 50 万个元素的一维数组(取自图像处理应用程序)。因此,针对原始数组逐一或以矢量化方式检查屏蔽数组的元素(例如使用 np.where)在我的情况下表现不佳。理想情况下,屏蔽数组和原始排序数组中的索引之间应该存在相对简单的数学关系。任何想法?
慕沐林林
茅侃侃
蓝山帝景
相关分类