在负面之前lexsort零?

时间:2013-06-07 10:55:51

标签: python arrays sorting numpy

我有一些我要排序的数据,但这个方法使用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

但这很奇怪,对吧?

1 个答案:

答案 0 :(得分:1)

正如塞堡所指出的,你所看到的并不是错误的。 Lexsort按提供的最后一个键排序,然后是倒数第二个,依此类推,这看起来有点落后。来自docstring:

  

使用序列中的最后一个键   对于主排序顺序,辅助排序的倒数第二个键   订单,等等。 keys参数必须是一系列对象   可以转换为相同形状的数组。如果提供了2D阵列   对于keys参数,它的行被解释为排序键和   排序是根据最后一行,倒数第二行等。

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

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