我有一些我要排序的数据,但这个方法使用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
但这很奇怪,对吧?
答案 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