當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。