2016-11-28 20 views
2

現在、Python 3とNumpyで作業しています。私はnumpy.genfromtxt("textfile.txt", names=True)を使用して作成された構造化配列を持っており、アルファベット順に列をソートしたいと思います。Numpy Python:アルファベット順の配列の列の並べ替え

  • 最初の行には列名が含まれています。

  • 他の列には、インスタンスごとに付随する値が含まれています。

単純に列の順序を列名のアルファベット順に切り替える必要があります。 たとえば、列の順番は'year','population','area'、今度は'area', 'population', 'year'になります。 事前にお手伝いいただきありがとうございます!以下のnumpyのアレイの場合

+0

ルック。 argsort.html)。 – Abdou

+0

ありがとう!私はアルファベット順にargsortを使用することはできませんでした。パラメータを調整する必要がありますか? – Frederique

+1

アブドゥー、あなたは疑問を誤解していると思います。彼は配列のレコードをソートしたくないので、列を並べ替える必要があります。 –

答えて

1

、答えは:[ `numpy.argsort`](https://docs.scipy.org/doc/numpy/reference/generated/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')]) 
関連する問題