NumPy の列で配列を並べ替える

Muhammad Maisam Abbas 2023年1月30日
  1. numpy.sort() 関数を使用した NumPy の列による配列の並べ替え
  2. numpy.argsort() 関数を使用した NumPy の列による配列の並べ替え
NumPy の列で配列を並べ替える

このチュートリアルでは、NumPy の列で配列を並べ替える方法を紹介します。

numpy.sort() 関数を使用した NumPy の列による配列の並べ替え

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() 関数を使用して 2DNumPy 配列 array を作成しました。次に、array.view() 関数を使用して、配列を構造化配列に変換しました。その後、sort(order=['f1'], axis=0) 関数を使用して、配列を 2 番目の列で並べ替えました。ここで、f1 は 2 番目の列を指します。

numpy.argsort() 関数を使用した NumPy の列による配列の並べ替え

前のアプローチとまったく同じことを行うもう 1つの簡単な方法は、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() 関数を使用して 2DNumPy 配列 array を作成しました。次に、配列スライスを使用して array の 2 番目の列のみを指定し、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