按行排序numpy数组,并根据原始数组对匹配值进行排序

时间:2014-10-10 18:43:35

标签: python sorting numpy

我有一个2D numpy数组,我想根据第一列值对行进行排序。问题在于格式化方式:

列我按以下方式排序:0,1,2,3,4,0,1,2,3,4,0,1,2,3,4等 - &gt;您可以看到它重复自己< / p>

基本上我想分组1s,然后是2s,然后是3s,然后是4s。匹配值的排序很重要:我希望第一个&#39; 1&#39; row是第一个出现在未排序数组中的行,接着是下一个出现的那个,等等。我使用这个命令: sortedData = myData [myData [:,0] .argsort()]

不幸的是,它似乎没有根据数组的原始顺序对匹配列进行排序。我可以启用某些选项来启用此功能吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用kind参数更改argsort使用的排序算法。

使用

sortedData= myData[myData[:,0].argsort(kind='mergesort')]

保留相等项目的顺序。 (Merge sort稳定的排序算法。)