在 NumPy 中按列對陣列進行排序

Muhammad Maisam Abbas 2023年1月30日
  1. NumPy 使用 numpy.sort() 函式按列對陣列進行排序
  2. NumPy 使用 numpy.argsort() 函式按列對陣列進行排序
在 NumPy 中按列對陣列進行排序

本教程將介紹在 NumPy 中按列對陣列進行排序的方法。

NumPy 使用 numpy.sort() 函式按列對陣列進行排序

假設我們有一個 2D NumPy 陣列,我們想根據特定列中元素的順序對行進行排序。我們可以使用 numpy.sort() 函式來做到這一點。numpy.sort() 函式 對 NumPy 陣列進行排序。我們可以在 numpy.sort() 函式的 orderaxis 引數中指定列索引和軸。我們需要將我們的陣列轉換為帶有欄位的結構化陣列以使用 numpy.sort() 函式。我們可以使用 numpy.view() 函式來做到這一點。請參考以下程式碼示例。

import numpy as np

array = np.array([[1, 1, 2], [0, 0, 1], [1, 1, 3]])
print("Array before sorting\n", array)

array.view("i8,i8,i8").sort(order=["f1"], axis=0)
print("Array after sorting\n", array)

輸出:

Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]

我們首先使用 np.array() 函式建立了 2D NumPy 陣列 array。然後我們使用 array.view() 函式將 array 轉換為結構化陣列。之後,我們使用 sort(order=['f1'], axis=0) 函式按第二列對陣列進行排序。此處,f1 指的是第二列。

NumPy 使用 numpy.argsort() 函式按列對陣列進行排序

另一種與前一種方法完全相同的更簡單的方法是使用 numpy.argsort() 函式。numpy.argsort() 函式 也用於對陣列的元素進行排序。它與之前的方法非常相似,但我們不需要使用 numpy.view() 函式來使這種方法工作。numpy.argsort() 函式返回用於對陣列進行排序的索引。請參考以下程式碼示例。

import numpy as np

array = np.array([[1, 1, 2], [0, 0, 1], [1, 1, 3]])
print("Array before sorting\n", array)

array[array[:, 1].argsort()]
print("Array after sorting\n", array)

輸出:

Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]

我們首先使用 np.array() 函式建立了一個 2D NumPy 陣列 array。然後我們使用一個陣列切片來指定 array 的第二列,並使用 np.argsort() 函式對其進行排序。我們使用 np.argsort() 函式返回的索引對 array 進行排序。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn