在 NumPy 中按列對陣列進行排序
本教程將介紹在 NumPy 中按列對陣列進行排序的方法。
NumPy 使用 numpy.sort()
函式按列對陣列進行排序
假設我們有一個 2D NumPy 陣列,我們想根據特定列中元素的順序對行進行排序。我們可以使用 numpy.sort()
函式來做到這一點。numpy.sort()
函式 對 NumPy 陣列進行排序。我們可以在 numpy.sort()
函式的 order
和 axis
引數中指定列索引和軸。我們需要將我們的陣列轉換為帶有欄位的結構化陣列以使用 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
進行排序。
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