按列对 python 数组/recarray 进行排序
我有一个相当简单的问题,关于如何按给定列对整个数组/记录数组进行排序。例如,给定数组:
import numpy as np
data = np.array([[5,2], [4,1], [3,6]])
我想按要返回的第一列对数据进行排序:
array([[3,6], [4,1], [5,2]])
I have a fairly simple question about how to sort an entire array/recarray by a given column. For example, given the array:
import numpy as np
data = np.array([[5,2], [4,1], [3,6]])
I would like to sort data by the first column to return:
array([[3,6], [4,1], [5,2]])
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用
data[np.argsort(data[:, 0])]
,其中0
是要排序的列索引:Use
data[np.argsort(data[:, 0])]
where the0
is the column index on which to sort:您正在寻找
operator.itemgetter
即
you are looking for
operator.itemgetter
i.e.
这有点棘手:
我在这里找到了这个食谱:
链接
http://mathesaurus.sourceforge.net/matlab-numpy.html
This is somewhat tricky:
I found this recipe here:
Link
http://mathesaurus.sourceforge.net/matlab-numpy.html
要对第二列进行排序,请使用
itemgetter
To sort on the second column use
itemgetter
这是一个适用于切片的扩展:
按行排序:
按列排序:
Here's an extension that works with slices:
Sorting by rows:
Sorting by columns: