我有一个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()]
不幸的是,它似乎没有根据数组的原始顺序对匹配列进行排序。我可以启用某些选项来启用此功能吗?
谢谢!
答案 0 :(得分:2)
您可以使用kind
参数更改argsort
使用的排序算法。
使用
sortedData= myData[myData[:,0].argsort(kind='mergesort')]
保留相等项目的顺序。 (Merge sort是稳定的排序算法。)