に従ったが、私はnumpyの配列を有していると言う:numpyのでソート2D - ソート1行及び他の選別
[[4 9 2]
[5 1 3]]
私はこのアレイの最下行をソートしたいのですが、一番上の行に従いました私が得るように、並べ替え:
[[9 2 4]
[1 3 5]]
私はあなたがソート()関数を使用して、このように並べ替えることができます知っているが、それはリストの入力と出力を必要とします。
アイデア?本当にありがとう!
に従ったが、私はnumpyの配列を有していると言う:numpyのでソート2D - ソート1行及び他の選別
[[4 9 2]
[5 1 3]]
私はこのアレイの最下行をソートしたいのですが、一番上の行に従いました私が得るように、並べ替え:
[[9 2 4]
[1 3 5]]
私はあなたがソート()関数を使用して、このように並べ替えることができます知っているが、それはリストの入力と出力を必要とします。
アイデア?本当にありがとう!
import numpy as np
a = np.array([[4,9,2],[5,1,3]])
idx = np.argsort(a[1])
は今、あなたはあなたのインデックス配列にIDXを使用することができます。
b=a[:,idx]
私が考えることができる唯一の(効率的な)ソリューションは、元の配列のコピーが必要です。
import numpy as np
a = np.array([[4,9,2],[5,1,3]])
idx = np.argsort(a[1])
だから、そのidx
はのインデックスが列をソートです。
c = a.copy()
for i in range(len(idx)):
a[:,i] = c[:,idx[i]]
これはかなり速いはずですが、もちろんメモリを無駄にします。
恐ろしいを、本当にありがとうございました!その解決策は私が予想していたよりずっと簡単でした。私はnumsortのargsort()の例を読んでいましたが、おそらくこの問題を考えすぎていました。 – woodstock