1.3.2.5 数据排序

按一个轴排序:

In [169]:

  1. a = np.array([[4, 3, 5], [1, 2, 1]])
  2. b = np.sort(a, axis=1)
  3. b

Out[169]:

  1. array([[3, 4, 5],
  2. [1, 1, 2]])

:每行分别排序!

原地排序:

In [170]:

  1. a.sort(axis=1)
  2. a

Out[170]:

  1. array([[3, 4, 5],
  2. [1, 1, 2]])

象征索引排序:

In [171]:

  1. a = np.array([4, 3, 1, 2])
  2. j = np.argsort(a)
  3. j

Out[171]:

  1. array([2, 3, 1, 0])

In [172]:

  1. a[j]

Out[172]:

  1. array([1, 2, 3, 4])

找到最大值和最小值:

In [173]:

  1. a = np.array([4, 3, 1, 2])
  2. j_max = np.argmax(a)
  3. j_min = np.argmin(a)
  4. j_max, j_min

Out[173]:

  1. (0, 2)

练习:排序

  • 试一下原地和非原地排序
  • 试一下用不同的数据类型创建数组并且排序。
  • all 或者 array_equal 来检查一下结果。
  • 看一下 np.random.shuffle,一种更快创建可排序输入的方式。
  • 合并 ravelsortreshape
  • 看一下 sortaxis 关键字,重写一下这个练习。