欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Numpy 排序 -- sort()、argsort()

程序员文章站 2022-05-12 17:48:56
...

Numpy 排序 – sort()、argsort()


官方文档


1、内容排序:sort()


函数原型: 对数组本身进行排序

numpy.sort(a, axis=-1, kind='quicksort', order=None)

参数:

  • a:要排序的 numpy 数组
  • axis:排序的维度,默认为-1最后一维,None为所有元素拉平后排序
  • kind:排序算法,有:‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’
  • order:多级排序的顺序,需要构建一个field

实例:

import numpy as np
a = np.array([[1,4],[3,1]])

# 默认按最后一维排序,每行各自排序
np.sort(a)               
=> narray([[1, 4],
           [1, 3]])

# 按地1维排序 ,每列各自排序         
np.sort(a, axis=0)
=> narray([[1, 1],
           [3, 4]])

# 所有元素排序
np.sort(a, axis=None)
=> narray([1, 1, 3, 4])

# 多级排序
dtype = [('name', 'S10'), ('height', float), ('age', int)]
values = [('Arthur', 1.8, 41),  ('Lancelot', 1.9, 38), ('Galahad', 1.7, 38)]
a = np.array(values, dtype=dtype)
np.sort(a, order='height')                        
=> array([('Galahad', 1.7, 38), ('Arthur', 1.8, 41), ('Lancelot', 1.8999999999999999, 38)],
      	 dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])

2、下标排序:argsort()


函数原型: 数组本身不变,返回排序的下标数组

numpy.argsort(a, axis=-1, kind='quicksort', order=None)

参数:

  • a:要排序的 numpy 数组
  • axis:排序的维度,默认为-1最后一维,None为所有元素拉平后排序
  • kind:排序算法,有:‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’
  • order:多级排序的顺序,需要构建一个field

实例:

import numpy as np

# 一维数组
x = np.array([3, 1, 2])
np.argsort(x)
=> array([1, 2, 0])

# 二维数组
x = np.array([[0, 3], [2, 2]])

np.argsort(x, axis=0)
=> array([[0, 1],
       	  [1, 0]])

np.argsort(x, axis=1)
=> array([[0, 1],
       	  [0, 1]])