ある配列の行を別の配列の値でソートしようとしています。例えば:
import numpy as np
arr1 = np.random.normal(1, 1, 80)
arr2 = np.random.normal(1,1, (80,100))
Arr1を降順に並べ替え、arr1とarr2の現在の関係を維持したい(つまり、両方を並べ替えた後、arr1[0]
とarr2[0, :]
の行が同じになる)。
次のように argsort
を使用します。
arr1inds = arr1.argsort()
sorted_arr1 = arr1[arr1inds[::-1]]
sorted_arr2 = arr2[arr1inds[::-1]]
この例では、降順で並べ替えます。
Zip関数を使用します。Zip( *sorted( Zip(arr1, arr2) ) )
これにより、必要な処理が実行されます。
ここで説明:Zip(arr1, arr2)
は2つのリストを結合するため、[(0、[...リスト0 ...])、(1、[...リスト1 ... ])、...]次に、sorted(...)
を実行します。デフォルトでは、タプルの最初のフィールドに基づいてソートされます。次に、再度Zip(...)
を実行します。これにより、ソートされたタプルが取得され、タプルの最初の要素(arr1から)と2番目の要素(arr2から)から2つのリストが作成されます。