繁体   English   中英

Python numpy保留一个已排序的2D数组的索引列表

[英]Python numpy keep a list of indices of a sorted 2D array

我有一个2D numpy数组,我想创建一个新的1D数组,如果它们按升序排序,它是第一个数组中的数字索引。 对于以下数组:

A = [[1,0,2],
     [0,3,0]]

我想这就像:

B = [[1,1],[0,2],[0,0],[0,1],[1,0],[1,2]]

知道如何使用预定义函数在python中完成它吗?

谢谢

您可以使用argsort对展平数组的索引进行排序,然后使用unravel_index将平面索引转换回坐标:

>>> i = (-a).argsort(axis=None, kind='mergesort')
>>> j = np.unravel_index(i, a.shape) 
>>> np.vstack(j).T
array([[1, 1],
       [0, 2],
       [0, 0],
       [0, 1],
       [1, 0],
       [1, 2]])

-akind='mergesort'是为了在降序(到你正在寻找的输出相匹配)以稳定的方式对数组进行排序。

如果您不关心稳定排序,请将第一行替换为:

>>> i = a.argsort(axis=None)[::-1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM