しょっちゅう忘れることを書いておく。
![]() |
66 |
1248 views
以下のコードでは、argsort
を使用して2次元配列の特定の列に基づいて行をソートしています。
# coding:UTF-8
import numpy as np
if __name__ == '__main__':
# ランダムな5x6の2次元配列を生成
data = np.random.randn(5, 6)
print(data)
# ソートの基準となる列番号を指定(ここでは4列目)
col_num = 4
# 指定した列の値を表示
print(data[:, col_num])
# argsortを使って列のインデックスを取得(小さい順に並ぶ)
col = np.argsort(data[:, col_num])
print(col)
# 取得したインデックスを使って行全体を並び替える
sorted_col = data[np.argsort(data[:, col_num])]
print(sorted_col)
ランダム配列生成
np.random.randn(5, 6)
で5行6列のランダムな数値からなる配列 (data
) を作成しています。ソート基準の列を選択
col_num = 4
で、ソートの基準となる列を指定します。ここでは5列目(インデックスでいうと4列目)です。指定列のデータ表示
data[:, col_num]
を使って、選択した列の値だけを表示しています。:
は全行を意味します。argsort
によるインデックスの取得
np.argsort(data[:, col_num])
は、指定した列の値を基に、小さい順にインデックスを並べた配列を返します。この結果がどの行が並び替えられるべきかを示します。インデックスを使ったソート
data[np.argsort(data[:, col_num])]
で、取得したインデックス順にdata
全体の行を並べ替えます。これにより、指定した列の値に基づいて行全体が昇順に並び替えられます。実行結果は、配列全体、ソート対象の列の値、argsort
の結果、そして並び替え後の配列が順に表示されます。
元のデータ例:
[[-0.14016536 0.21551254 0.24784852 0.59144645 0.32235863 0.67189879]
[-0.1197581 0.34133468 0.89260091 -1.09935213 1.52181822 0.01690957]
[-0.88335896 -0.72368754 -0.87826505 2.48254012 -0.62577154 1.82120588]
[ 0.46286874 1.74054554 1.21514558 0.520769 1.01164945 -0.57376935]
[-2.14264006 -0.36363893 1.18613253 0.04081303 -0.22348603 -0.26786658]]
ソート対象の列:
[ 0.32235863 1.52181822 -0.62577154 1.01164945 -0.22348603]
ソート後の結果:
[[-0.88335896 -0.72368754 -0.87826505 2.48254012 -0.62577154 1.82120588]
[-2.14264006 -0.36363893 1.18613253 0.04081303 -0.22348603 -0.26786658]
[-0.14016536 0.21551254 0.24784852 0.59144645 0.32235863 0.67189879]
[ 0.46286874 1.74054554 1.21514558 0.520769 1.01164945 -0.57376935]
[-0.1197581 0.34133468 0.89260091 -1.09935213 1.52181822 0.01690957]]
上記のように、ソート対象の列を基準にして全行が並べ替えられています。
参照リンクの方法を用いて、2次元配列の行をランダムにシャッフルするには以下のコードを使います。
data = np.random.randn(5, 6)
print("Before shuffle:\n", data)
# 行の順序をランダムに入れ替える
np.random.shuffle(data)
print("After shuffle:\n", data)
np.random.shuffle
を使うと、元の配列の行順序がランダムに変更されます。
Page 2 of 69.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/