当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NumPy sort方法用法及代码示例


Numpy 的 sort(~) 方法返回输入数组的排序副本。请注意,原始数组保持不变。

参数

1. a | array_like

输入数组。

2. axis | int | optional

对输入数组进行排序的轴。对于二维数组,允许的值如下:

意义

None

展平数组并对其进行排序

0

按列排序

1

按行排序

默认情况下,axis=-1 表示仅在最后一个轴上进行排序。对于二维数组,这意味着默认排序行为是按行排序。

3. kind | string | optional

要使用的排序算法。目前,Numpy 提供以下选择:

种类

速度

最坏的情况下

memory

稳定的

quicksort

1(快)

O(n^2)

0

no

mergesort

2

O(nlogn)

~n/2

yes

timsort

2

O(nlogn)

~n/2

yes

heapsort

3(慢)

O(nlogn)

0

no

"stable" 的排序算法保留重复值的相对顺序。例如,假设您要按每个元组的第一个元素对数组 [(2,3), (2,1), (4,5)] 进行排序。我们这里有一个重复值 2,因此稳定的排序算法确保 (2,3) 始终位于 (2,1) 之前,因为这就是它们最初的排序方式。不稳定的搜索不能保证保留此类顺序。

默认情况下,kind="quicksort"

警告

数据类型决定使用归并排序还是时间排序

尽管您可以指定 mergesort 或 timsort,Numpy 最终将根据数组的数据类型做出决定。目前无法强制您在两者之间选择算法。

注意

Timsort 为排序或接近排序的数组提供最佳性能

Timsort 是 Numpy(版本 1.17)中添加的最新搜索算法。对于随机排列的数字,Timsort 仍然几乎与归并排序一样高效。

4. order | stringliststrings | optional

排序依据的字段。这仅适用于结构化数组 - 请参阅下面的示例以进行说明。

返回值

一个 Numpy 数组,它是输入数组的排序副本。

例子

对一维数组进行排序

x = np.array([1,4,2,3])
np.sort(x)



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

对二维数组进行排序

假设我们有以下二维数组:

x = np.array([[1,4],[3,2]])
x



array([[1, 4],
       [3, 2]])
对展平的数组进行排序
np.sort(x, axis=None)



array([1, 2, 3, 4])
按行排序
np.sort(x)      # or explicitly set axis=1



array([[1, 4],
       [2, 3]])
按列排序
np.sort(x, axis=0)



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

指定结构化数组的顺序

假设我们有以下结构化数组:

dtype = [('name', 'S15'), ('age', int)]
values = [('Bob', 35), ('Alex', 15),('Cathy', 24)]
x = np.array(values, dtype)
x



array([(b'Bob', 35), (b'Alex', 15), (b'Cathy', 24)],
        dtype=[('name', 'S15'), ('age', '<i8')])

我们的数组 x 由三个元组组成,第一个元素为 name ,第二个元素为 age

name 排序:

np.sort(x, order="name")



array([(b'Alex', 15), (b'Bob', 35), (b'Cathy', 24)],
      dtype=[('name', 'S15'), ('age', '<i8')])

请注意元组如何按名称排序: AlexBobCathy

age 排序:

np.sort(x, order="age")



array([(b'Bob', 15), (b'Cathy', 24), (b'Alex', 35)],
      dtype=[('name', 'S15'), ('age', '<i8')])

请注意元组如何按年龄排序:15、24,然后是 35。

您还可以传入要排序的标签数组(例如 order=["name", "age"] ),这将首先按 name 对数组进行排序,然后按 age 进行排序。

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 NumPy | sort method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。