【问题标题】:Sort numpy array by row and order matching values based on original array按行排序numpy数组并根据原始数组排序匹配值
【发布时间】:2014-10-10 18:43:34
【问题描述】:

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

我正在排序的列:0,1,2,3,4,0,1,2,3,4,0,1,2,3,4 等 ->你可以看到它重复自己

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

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

谢谢!

【问题讨论】:

    标签: python sorting numpy


    【解决方案1】:

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

    使用

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

    保持相等项目的顺序。 (Merge sort 是一种稳定 排序算法。)

    【讨论】: