2017-06-22 24 views
1

2dのnumpy配列をとり、列と行の名前を構造化配列として結びつける良い方法を見つけようとしています。例えば:これは私がmatrix[2]['a']を行うことができますが、今、私は私がmatrix['3']['a']を行うことができますので、行の名前を変更したい構造化2D Numpy配列:列名と行名を設定する

matrix.dtype = [(n, matrix.dtype) for n in column_names] 

import numpy as np 

column_names = ['a', 'b', 'c'] 
row_names = ['1', '2', '3'] 

matrix = np.reshape((1, 2, 3, 4, 5, 6, 7, 8, 9), (3, 3)) 

# TODO: insert magic here 

matrix['3']['a'] # 7 

私はこのような設定の列を使用することができました。

+0

を。パンダはありますか? – MSeifert

+0

私は本当にパンダを持っています。あなたは列のためのパンダのシリーズの索引付けを提案していますか? – freebie

+1

いいえ私は 'index'を使って行にアクセスすることをお勧めします:) – MSeifert

答えて

0

私が知る限り、純粋に構造化されたNumPy配列で行を「名前付け」することはできません。

しかし、あなたがを持っている場合、それは(基本的に、「行名」のように働く)「インデックス」を提供することが可能です:私はそれが構造化numpyのアレイとはできません知っている限り

>>> import pandas as pd 
>>> import numpy as np 
>>> column_names = ['a', 'b', 'c'] 
>>> row_names = ['1', '2', '3'] 

>>> matrix = np.reshape((1, 2, 3, 4, 5, 6, 7, 8, 9), (3, 3)) 
>>> df = pd.DataFrame(matrix, columns=column_names, index=row_names) 
>>> df 
    a b c 
1 1 2 3 
2 4 5 6 
3 7 8 9 

>>> df['a']['3']  # first "column" then "row" 
7 

>>> df.loc['3', 'a'] # another way to index "row" and "column" 
7 
関連する問題