我理解按列排序numpy数组arr
(例如,对于特定列,例如,第2列)可以通过以下方式完成:
arr[arr[:,1].argsort()]
我如何理解此代码示例的工作原理:argsort
对arr
的第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()
以简单的方式获得但是没有成功
答案 0 :(得分:1)
我认为hadoop dfs -ls
是一个numpy数组?我在python中的任何其他上下文中都没有看到语法arr
。你的问题值得一提!
假设是这种情况,那么你应该使用
arr[:,1]
按列排序和
arr.sort(axis=0)
按行排序。 (两者都是就地排序,即更改arr.sort(axis=1)
的值。如果您不想这样,您可以先将arr
复制到另一个变量中,然后应用{ {1}}到那。)
如果你只想排序一行(在这种情况下,第二行),那么
arr
作品。
编辑:我现在明白您要解决的问题。您希望对矩阵中的列重新排序,以便n th 行按递增顺序排列。你可以简单地通过
来做到这一点sort
(这里我们按第二行排序)。