在python中按行排序数组

时间:2016-04-27 11:42:31

标签: python arrays sorting

我理解按列排序numpy数组arr(例如,对于特定列,例如,第2列)可以通过以下方式完成:

arr[arr[:,1].argsort()]

我如何理解此代码示例的工作原理:argsortarr的第2列的值进行排序,并将相应的索引作为数组给出。该数组作为行号提供给arr。我的解释是否正确?

现在我想知道如果我想针对第二行而不是第二列对数组arr进行排序?在排序数组之前转换数组是最简单的方法,并在排序后将其转置回来,或者有没有办法像以前一样(通过给出一个包含我们希望显示的列数的数组)?

我没有做(n,n)array[(n,)array](n是2d数组的大小),而是尝试做(n,n)array[(n,1)array]之类的事情来表示列的数量,但它不起作用。

我想要的例子:

arr = [[11,25],[33,4]] =>基数组

arr_col2=[[33,4],[11,25]] =>我得到argsort()

的数组

arr_row2=[[25,11],[4,33]] =>数组我试图用argsort()以简单的方式获得但是没有成功

1 个答案:

答案 0 :(得分:1)

我认为hadoop dfs -ls是一个numpy数组?我在python中的任何其他上下文中都没有看到语法arr。你的问题值得一提!

假设是这种情况,那么你应该使用

arr[:,1]

按列排序和

arr.sort(axis=0)

按行排序。 (两者都是就地排序,更改arr.sort(axis=1) 的值。如果您不想这样,您可以先将arr复制到另一个变量中,然后应用{ {1}}到那。)

如果你只想排序一行(在这种情况下,第二行),那么

arr

作品。

编辑:我现在明白您要解决的问题。您希望对矩阵中的列重新排序,以便n th 行按递增顺序排列。你可以简单地通过

来做到这一点
sort

(这里我们按第二行排序)。