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 按提供的最后一个键排序,然后是倒数第二个,依此类推,这可能看起来有点倒退。从文档字符串:

序列中的最后一个键用于主排序顺序,倒数第二个键用于辅助排序顺序,依此类推。keys 参数必须是可以转换为相同形状的数组的对象序列。如果为 keys 参数提供了 2D 数组,则它的行被解释为排序键,并且根据最后一行、倒数第二行等进行排序。

鉴于此,您看到的内容已正确排序,但您可能想要做的是以下内容:

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 回答