Pynote

Python、機械学習、画像処理について

numpy - ソートする関数

概要

numpy のソートを行う関数を整理する。

一覧表

名前 説明
numpy.argsort 降順ソート後のインデックスを返す。
numpy.lexsort 複数のキーで降順ソート後のインデックスを返す。
numpy.sort 降順ソートした配列を返す。
numpy.sort_complex 複素数の配列を実部、虚部で降順ソートした配列を返す。

numpy.argsort

降順ソート後のインデックスを返す。

関数

numpy.argsort(a, axis=-1, kind='quicksort', order=None)

# 降順ソート
a = np.array([3, 4, 0, -1, 3, 1, -3, -4, 1, 2])
print(np.argsort(a))  # [7 6 3 2 5 8 9 0 4 1]

# 昇順ソート
a = np.array([3, 4, 0, -1, 3, 1, -3, -4, 1, 2])
print(np.argsort(a)[::-1])  # [1 4 0 9 8 5 2 3 6 7]

numpy.lexsort

複数のキーで降順ソート後のインデックスを返す。

関数

numpy.lexsort(keys, axis=-1)

例: keys に配列のリストを指定した場合、各配列をキーにして降順ソートする。
(キーの優先順位は、keys[-1], keys[-2], ..., keys[0] の順)

key1 = [2, 1, 3, 2]
key2 = [5, 2, 5, 6]
indices = np.lexsort((key1, key2))
print(indices)  # [1 0 2 3]

keys = np.array([[2, 1, 3, 2],
                 [5, 2, 5, 6]])
indices = np.lexsort(keys)
print(indices)  # [1 0 2 3]

例: keys に2次元配列を指定した場合、各行をキーにして降順ソートする。
(キーの優先順位は、keys[-1], keys[-2], ..., keys[0] の順)

keys = np.array([[2, 1, 3, 2],
                 [5, 2, 5, 6]])
indices = np.lexsort(keys)
print(indices)  # [1 0 2 3]

numpy.sort

降順ソートした配列を返す。

関数

numpy.sort(a, axis=-1, kind='quicksort', order=None)

# 降順ソート
a = np.array([3, 4, 0, -1, 3, 1, -3, -4, 1, 2])
print(np.sort(a))  # [-4 -3 -1  0  1  1  2  3  3  4]

# 昇順ソート
a = np.array([3, 4, 0, -1, 3, 1, -3, -4, 1, 2])
print(np.sort(a)[::-1])  # [ 4  3  3  2  1  1  0 -1 -3 -4]

numpy.sort_complex

複素数の配列を実部、虚部をキーにして降順ソートした配列を返す。(キーの優先順位は、実部、虚部の順)

関数

numpy.sort_complex(a)

a = np.array([1 + 2j, 2 - 1j, 3 - 2j, 3 - 3j, 3 + 5j])
print(np.sort_complex(a))  # [1.+2.j 2.-1.j 3.-3.j 3.-2.j 3.+5.j]