2024-05-22 21:29:56 发布
网友
我有一张单子
[[0, 3], [5, 1], [2, 1], [4, 5]]
我用numpy.array制作了一个数组:
[[0 3] [5 1] [2 1] [4 5]]
我该怎么把它分类成一张桌子?特别是,我想按第二列升序排序,然后通过让第一列按升序排序来解析任何关系。因此我希望:
[[2 1] [5 1] [0 3] [4 5]]
任何帮助都将不胜感激!
您可以使用numpy.lexsort():
numpy.lexsort()
>>> a = numpy.array([[0, 3], [5, 1], [2, 1], [4, 5]]) >>> a[numpy.lexsort(a.T)] array([[2, 1], [5, 1], [0, 3], [4, 5]])
另一种方法是-分割出所需的数据位,使用argsort获取排序索引,然后使用该结果分割原始数组:
a = np.array([[0, 3], [5, 1], [2, 1], [4, 5]]) subarray = a[:,1] # 3,1,1,5 indices = np.argsort(subarray) # Returns array([1,2,0,3]) result = a[indices]
或者,一气呵成:
a[np.argsort(a[:,1])]
见http://docs.scipy.org/doc/numpy/reference/generated/numpy.lexsort.html#numpy.lexsort
特别是在你的情况下
import numpy as np x = np.array([[0,3],[5,1],[2,1],[4,5]]) x[np.lexsort((x[:,0],x[:,1]))]
输出
array([[2,1],[5,1],[0,3],[4,5]])
您可以使用
numpy.lexsort()
:另一种方法是-分割出所需的数据位,使用argsort获取排序索引,然后使用该结果分割原始数组:
或者,一气呵成:
见http://docs.scipy.org/doc/numpy/reference/generated/numpy.lexsort.html#numpy.lexsort
特别是在你的情况下
输出
相关问题 更多 >
编程相关推荐