【发布时间】:2016-04-27 11:42:31
【问题描述】:
我知道按列对 numpy 数组 arr 进行排序(仅针对特定列,例如其第二列)可以通过以下方式完成:
arr[arr[:,1].argsort()]
我如何理解此代码示例的工作原理:argsort 对arr 的第二列的值进行排序,并将相应的索引作为数组提供。该数组作为行号提供给arr。我的解释正确吗?
现在我想知道如果我想根据第二行而不是第二列对数组arr 进行排序怎么办?是在排序之前转置数组并在排序后将其转回的最简单方法,还是有一种方法可以像以前一样(通过给出一个包含我们希望显示的列数的数组)?
我没有使用(n,n)array[(n,)array](n 是二维数组的大小),而是尝试使用(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() 以简单的方式获得但没有成功
【问题讨论】:
-
我怀疑这是一个 numpy 数组,而不是 vanilla python 数组——在这种情况下,它不是那个问题的重复(尽管可能已经在其他地方问过)
-
确实不是重复的。我想知道是否有与我描述的方法类似的方法来对特定行的 numpy 数组进行排序,而不是混合列(而不是对列进行排序)。我不明白的主要事情是 2darray[1darray] 是如何工作的。