Numpy Python:按字母顺序对数组中的列进行排序

时间:2016-11-28 13:57:53

标签: python arrays sorting numpy alphabetical

我目前正在使用Python 3和Numpy。我有一个使用numpy.genfromtxt("textfile.txt", names=True)创建的结构化数组,我想按字母顺序对列进行排序。

  • 第一行包含列的名称。

  • 其他列包含每个实例的附带值。

我只想将列的顺序切换为列名的字母顺序。 例如,现在列的顺序为'year''population''area',我希望它成为'area', 'population', 'year'。 在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

对于以下numpy数组,答案是:

import numpy as np


x = np.array([(2015, 34, 12, 13), (2016, 41, 6, 7), (2016, 17, 5, 2),
       (2013, 21, 8, 19), (2013, 1, 81, 9)], 
      dtype=[('year', '<i8'), ('tigers', '<i8'), ('monkeys', '<i8'), ('cows', '<i8')])

x[numpy.sort(x.dtype.names)]

# Output:
array([(13, 12, 34, 2015), (7, 6, 41, 2016), (2, 5, 17, 2016),
       (19, 8, 21, 2013), (9, 81, 1, 2013)], 
      dtype=[('cows', '<i8'), ('monkeys', '<i8'), ('tigers', '<i8'), ('year', '<i8')])