10

Pythonリストに変換せずに、キー(またはコンパレータ)関数を使用してnumpy ndarrayの行を並べ替える方法はありますか?

特に、この関数に従って並べ替える必要があります。

c1,c2= 4,7
lambda row: c1*(row[1]/c2)+row[0]

考えられる解決策の1つは、各行のキー値を使用してベクトルを生成することですが、それに従ってどのように並べ替えるのでしょうか。どういうわけか、そのようなベクトルをインデックスベクトルに変換しようとする必要がありますか?

order= c1*(matrix[:,1]/c2)+matrix[:,0]
indexes= order_to_index( order )
return matrix[ indexes ]

これは現実的ですか?

4

2 に答える 2

5

あなたのアプローチは正しいです、それはシュワルツ変換または装飾-並べ替え-非装飾(DSU)イディオムに似ています

私が言ったように、numpy 関数np.argsortを使用できます。それはあなたの仕事をしますorder_to_index

于 2012-10-13T23:42:49.323 に答える