NumPy - 如果没有填充零,则不能正确排序数组

时间:2015-03-03 08:23:12

标签: python arrays sorting numpy

我有以下形式的数组元素:

['A 0', 'A 10', 'A 1', 'A 100', 'A 20', 'A 200']

当我尝试使用np.sort()对其进行排序时,它没有正确排序。如何正确排序数组?

代码

import numpy as np
A = np.array(['A 0', 'A 10', 'A 1', 'A 100', 'A 20', 'A 200'])
A = np.sort(A)
print A

输出

['A 0' 'A 1' 'A 10' 'A 100' 'A 20' 'A 200']

所需的输出

['A 0' 'A 1' 'A 10' 'A 20' 'A 100' 'A 200']

2 个答案:

答案 0 :(得分:1)

最简单的方法是将数据作为两个单独的列加​​载:文本部分和数字部分。这有效:

>>> lst = ['A 0', 'A 10', 'A 1', 'A 100', 'A 20', 'A 200']
>>> A = np.loadtxt(lst, dtype=[('text', 'S4'), ('numbers', int)])
>>> A.sort(order='numbers')
>>> A
array([('A', 0), ('A', 1), ('A', 10), ('A', 20), ('A', 100), ('A', 200)], ...

答案 1 :(得分:0)

然后你应该告诉它应该怎么做,例如:

lst.sort(key=lambda s: int(s[2:]))