簡體   English   中英

使用numpy.lexsort對文本文件中的兩列進行排序

[英]sort two columns in a text file with numpy.lexsort

我有一個包含兩列的文本文件,我想將第一列從較小的值排序為較大的值,然后根據第一列對第二列進行排序,然后將其保存到同一文件中。 我使用了這種方法,但是沒有用

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

我該怎么辦?

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,:])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM