按列排序数组

问题:

如何在第n列中对NumPy中的数组进行排序?
例如,

a = array([[1, 2, 3],
           [4, 5, 6],
           [0, 0, 1]])

我想排列第二列,这样我回来了:

array([[0, 0, 1],
       [1, 2, 3],
       [4, 5, 6]])

回答:

 @steve其实是最优雅的做法。
对于“正确”方式,请参阅numpy.ndarray.sort的order关键字参数
但是,您需要将数组视为具有字段(结构化数组)的数组。
如果您最初没有使用字段定义数组,则“正确”的方式是相当难看的…
作为一个快速的例子,排序并返回一个副本:

In [1]: import numpy as np

In [2]: a = np.array([[1,2,3],[4,5,6],[0,0,1]])

In [3]: np.sort(a.view('i8,i8,i8'), order=['f1'], axis=0).view(np.int)
Out[3]: 
array([[0, 0, 1],
       [1, 2, 3],
       [4, 5, 6]])

要按原样排序:

In [6]: a.view(‘i8,i8,i8’).sort(order=[‘f1’], axis=0) #<-- returns None In [7]: a Out[7]: array([[0, 0, 1], [1, 2, 3], [4, 5, 6]]) [/code] @史蒂夫真的是最优雅的做法,据我所知... 该方法的唯一优点是“order”参数是用于搜索的顺序的列表。例如,您可以通过第二列,然后是第三列,然后通过提供order = ['f1','f2','f0']排序第一列。     Code问答: http://codewenda.com/topics/python/
Stackoverflow: sorting arrays in numpy by column

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

71 − 61 =