在numpy矩阵中对字母数字字符串进行排序

时间:2013-06-29 04:27:14

标签: python sorting matrix numpy alphanumeric

我有一个包含10列不同类型的矩阵。我根据字母数字列对它们进行了排序:

data = np.sort(data, axis=0,order='AlphaNumColumn')

它没有正确的工作,即

BFT_job10_q0
BFT_job13_q0
BFT_job13_q1
BFT_job1_q0

而不是:

BFT_job1_q0
BFT_job10_q0
BFT_job13_q0
BFT_job13_q1

任何numpy都可以做到这一点?谢谢!

1 个答案:

答案 0 :(得分:3)

排序顺序似乎是正确的。我建议你查看你的编号:

1 becomes 01

如果你必须保留你的编号,你也可以这样做:

key = lambda x: '.'.join(x.split('_')[1:3]).replace('job','').replace('q','')

a[np.argsort([float(key(i)) for i in a[:,0]])]

key()将执行以下操作:

key('BFT_job10_q0') --> 10.
key('BFT_job1_q0')  --> 1.
key('BFT_job13_q1') --> 13.1
key('BFT_job13_q0') --> 13.