使用numpy.lexsort对文本文件中的两列进行排序

时间:2013-11-18 06:47:56

标签: python sorting numpy

我有一个包含两列的文本文件,我想将第一列从较小的值排序为较大的值,并根据第一列对第二列进行排序,然后将其保存到同一文件中。我用过这种方法但没有用

data4 = np.loadtxt('crate&J.txt')
a = data4[:,0]
b = data4[:,1]
ind = np.lexsort((b,a))

我该怎么办?

1 个答案:

答案 0 :(得分:0)

Lexsort不排序数组,它会返回索引。比如说来自docs:

>>> first_names = ('Heinrich', 'Galileo', 'Gustav')
>>> surnames =    ('Hertz',    'Galilei', 'Hertz')
>>> data = np.array([first_names, surnames])
>>> ind = np.lexsort(data)
>>> data[:, ind]
array([['Galileo', 'Gustav', 'Heinrich'],
       ['Galilei', 'Hertz', 'Hertz']],
      dtype='|S8')

所以我想你的情况需要

ind = np.lexsort(data.T[[1,0], :]) # you sort columns, not rows, second row first
np.savetxt('crate&J.txt', data4[ind,:])