1

ソートしたいデータがいくつかありますが、このメソッドは numpy.lexsort() を使用しています

data = np.zeros(shape=(n,6))
# some routine that partially populates the table
index = np.lexsort((data[:,0],data[:,1]))
data = data[index] # sort

などのテーブルで使用

-500    0.5 0.0 0.0 0.0 0.0
-400    0.6 0.0 0.0 0.0 0.0
0.0     0.0 0.0 0.0 0.0 0.0
0.0     0.0 0.0 0.0 0.0 0.0

次のようなデータを返します。

0.0     0.0 0.0 0.0 0.0 0.0
0.0     0.0 0.0 0.0 0.0 0.0
-500    0.5 0.0 0.0 0.0 0.0
-400    0.6 0.0 0.0 0.0 0.0

しかし、それは奇妙ですよね?

4

1 に答える 1

1

seburg が指摘したように、あなたが見ているものは間違っていません。Lexsort は、最後に提供されたキーでソートし、次に最後から 2 番目のキーでソートします。docstring から:

シーケンスの最後のキーがプライマリの並べ替え順序に使用され、最後から 2 番目のキーがセカンダリの並べ替え順序に使用されます。keys 引数は、同じ形状の配列に変換できる一連のオブジェクトでなければなりません。keys 引数に 2D 配列が指定されている場合、その行は並べ替えキーとして解釈され、並べ替えは最後の行、最後から 2 番目の行などに従って行われます。

これを考えると、あなたが見ているものは正しくソートされていますが、おそらくやりたかったことは次のとおりです。

data = np.zeros(shape=(n,6))
# some routine that partially populates the table
index = np.lexsort((data[:,1],data[:,0]))
data = data[index] # sort
于 2013-06-07T22:23:30.903 に答える