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

3
我目前在使用Python 3和Numpy。我通过使用numpy.genfromtxt(“textfile.txt”,names = True)创建了一个结构化数组,我想按字母顺序对列进行排序。
  • 第一行包含列的名称。

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

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

请查看numpy.argsort - Abdou
1
Abdou,我觉得你误解了问题。他不是想对数组中的记录排序,而是想重新排列列。 - HiFile.app - best file manager
@V.K. 我刚刚意识到。按名称选择数组,然后按您想要的顺序堆叠或连接它们。 - Abdou
@Frederiquevdb,请提供一个玩具数据集来使用好吗? - Abdou
我刚找到了一个解决方案。应该是:x[numpy.sort(x.dtype.names)]. - Frederique
显示剩余2条评论
1个回答

2
对于以下的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')])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接