📜  numpy 数组排序 - Python (1)

📅  最后修改于: 2023-12-03 15:33:14.560000             🧑  作者: Mango

Numpy 数组排序 - Python

Numpy 提供了丰富的数组排序功能。您可以使用这些功能对一维、二维以及更高的维度数组进行排序。本文将介绍 Numpy 数组的排序功能和排序方式。

一维数组排序

在 Numpy 中,一维数组可以使用 sort 函数进行排序。sort 函数有以下常用参数:

  • axis:指定排序的轴,一维数组只有一个轴,因此不需指定。
  • kind:指定排序算法。默认值为 'quicksort',还可以是 'mergesort' 或 'heapsort'。

以下是一个示例代码片段:

import numpy as np

arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])

print("排序前:", arr)

arr.sort()

print("排序后:", arr)

输出:

排序前: [3 1 4 1 5 9 2 6 5 3 5]
排序后: [1 1 2 3 3 4 5 5 5 6 9]

以上代码使用默认算法 'quicksort' 对一维数组进行排序。如果想指定其他算法,可以通过 kind 参数传参。

二维数组按列排序

在 Numpy 中,二维数组可以使用 sort 函数进行排序。sort 函数有以下常用参数:

  • axis:指定按哪个轴进行排序,0 表示按列排序,1 表示按行排序。
  • kind:指定排序算法。默认值为 'quicksort',还可以是 'mergesort' 或 'heapsort'。

以下是一个示例代码片段:

import numpy as np

arr = np.array([[3, 1, 4], [1, 5, 9], [2, 6, 5]])

print("排序前:\n", arr)

arr.sort(axis=0)

print("排序后:\n", arr)

输出:

排序前:
 [[3 1 4]
  [1 5 9]
  [2 6 5]]
排序后:
 [[1 1 4]
  [2 5 5]
  [3 6 9]]

以上代码按列进行排序,即对每一列中的元素进行排序。如果想按行进行排序,只需将 axis 指定为 1。

二维数组按行排序

以下是按行排序的示例代码片段:

import numpy as np

arr = np.array([[3, 1, 4], [1, 5, 9], [2, 6, 5]])

print("排序前:\n", arr)

arr.sort(axis=1)

print("排序后:\n", arr)

输出:

排序前:
 [[3 1 4]
  [1 5 9]
  [2 6 5]]
排序后:
 [[1 3 4]
  [1 5 9]
  [2 5 6]]

以上代码按行进行排序,即对每一行中的元素进行排序。如果想按列进行排序,只需将 axis 指定为 0。

多维数组排序

在 Numpy 中,多维数组可以使用 sort 函数进行排序。多维数组的排序分为两部分,先对指定轴排序,再对其它轴排序。例如,对(3, 4, 2)的三维数组,如果想先对第二维进行排序,再对第一维排序,则需要按以下方式进行排序:

arr.sort(axis=1)
arr.sort(axis=0)

下面是一个排序示例,对于一个(3, 4,2)的三维数组,我们将按以下方式进行排序:

  1. 先按第一维排序。
  2. 然后按第二维排序。
  3. 最后按第三维排序。
import numpy as np

arr = np.array([[[8, 7],
                 [2, 2],
                 [9, 1],
                 [9, 2]],

                [[0, 8],
                 [7, 5],
                 [0, 1],
                 [8, 6]],

                [[4, 4],
                 [6, 4],
                 [3, 5],
                 [5, 2]]])

print("排序前:\n", arr)

arr.sort(axis=0)
arr.sort(axis=1)
arr.sort(axis=2)

print("排序后:\n", arr)

输出:

排序前:
 [[[8 7]
  [2 2]
  [9 1]
  [9 2]]

 [[0 8]
  [7 5]
  [0 1]
  [8 6]]

 [[4 4]
  [6 4]
  [3 5]
  [5 2]]]
排序后:
 [[[1 2]
  [7 8]
  [2 9]
  [2 9]]

 [[0 0]
  [1 5]
  [6 7]
  [6 8]]

 [[2 3]
  [4 4]
  [4 5]
  [2 5]]]

以上代码将按照上述步骤排序,最终输出已排序的多维数组。

总结

Numpy 提供了丰富的数组排序功能,可以满足需要不同维度数组的排序需求。除了一维、二维和多维数组外,Numpy 还支持字符串和元组的排序,具有广泛的适用性。