Skip to main content
 首页 » 编程设计

python之使用 numpy 从过滤、排序的数组返回索引

2025年05月04日15Terrylee

在 python/numpy 中执行以下操作的最直接方法是什么?

  • 从随机数组开始x
  • 过滤掉元素x < .5
  • 将剩余的值按大小排序
  • 返回指数(原始)x对应于这些值

请您参考如下方法:

找到 x < 0.5 的掩码和 x.argsort()在这里似乎是强制性的。一旦有了这两个,就可以使用排序索引对掩码数组进行排序,并在排序索引上使用此掩码以取回与满足掩码条件的排序索引相对应的索引。因此,您将再添加一行代码,就像这样 -

mask = x < 0.5 
sort_idx = x.argsort() 
out = sort_idx[mask[sort_idx]] 

分步运行示例 -

In [56]: x 
Out[56]: array([ 0.8974009 ,  0.30127187,  0.71187137,  0.04041124]) 
 
In [57]: mask 
Out[57]: array([False,  True, False,  True], dtype=bool) 
 
In [58]: sort_idx 
Out[58]: array([3, 1, 2, 0]) 
 
In [59]: mask[sort_idx] 
Out[59]: array([ True,  True, False, False], dtype=bool) 
 
In [60]: sort_idx[mask[sort_idx]] 
Out[60]: array([3, 1])