【问题标题】:lexsort zeros before negatives?lexsort 负数之前的零?
【发布时间】:2013-06-07 10:55:51
【问题描述】:

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

但这很奇怪,对吧?

【问题讨论】:

  • 最后一列是主键,所以它当然可以正确排序。您必须更改订单。

标签: python arrays sorting numpy


【解决方案1】:

正如 seburg 所说,您所看到的并没有错。 Lexsort 按提供的最后一个键排序,然后是倒数第二个,依此类推,这可能看起来有点倒退。来自文档字符串:

使用序列中的最后一个键 对于主要排序顺序,次要排序的倒数第二个键 订单等。 keys 参数必须是一个对象序列 可以转换为相同形状的数组。如果提供了二维数组 对于 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

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 2020-10-01
    • 1970-01-01
    • 2014-06-08
    • 2015-03-31
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多