2016-01-29 14 views
5

これは可能かどうかわかりませんが、おそらく素朴な疑問ですが、Rのrownames()colnames()に相当するものをscipy.sparse.csr.csr_matrixに設定するにはどうすればよいですか?Scipyのcsr_matrixに行と列の名前を付けるにはどうしたらいいですか?

私はまた、pandas.sparse.*があるため、いくつかの未解決の問題のため、ここではオプションではありません... my_matrix.dtype.namesはここで働いていない、と私は、このような疎行列のための任意の「インデックス」equivalendを見つけることができないことを

を見ました...

は、あなたの助けのためにどうもありがとうございます

+0

'dtype.names'は構造化配列の' fields'を参照します。 CSV表の列名/ヘッダーを考えてください。あなたはフィールド間で多くの数学をすることはできません。そして、そのような種類のdtypeを疎な行列で使うことはできません。 – hpaulj

答えて

3

あなたがscipyのダウンロードのまばらな形式のいずれもインデックス命名ないサポートなど、個別の名前を維持する必要があります。これは次のようになります。

foo = csr_matrix(...) 
row_names = np.array(...) 
col_names = np.array(...) 

# index by name: 
row_idx, = np.where(row_names == "my row") 
col_idx, = np.where(col_names == "my col") 
foo[row_idx, col_idx] 
+0

辞書の見た目が速いのだろうかと思いますか?まばらな 'dok'形式は、実際にはインデックスのタプルをキーとする辞書です。 – hpaulj

+0

効率は行列のサイズと希薄さに依存しますが、名前 - >索引の辞書も使えます。しかしDOK形式は、キーが整数の対でなければならないので、助けになりません。 – perimosocordiae

+0

しかし、彼はラベルのタプルをキーとして独自の辞書を作っているかもしれません。それは彼に数学的能力を与えません。 – hpaulj

関連する問題