- (行、列、値)トリプルの配列をNumpyの行列に変換する最も簡単な方法は何ですか?
- 任意の数のインデックスがある場合はどうですか?
- また、マトリックスを (行、列、値) トリプレットに戻す最も簡単な方法は何ですか?
以下は 3 に対して機能しますが、非常に遠回しに感じます
In [1]: M = np.arange(9).reshape((3,3))
In [2]: M
Out[2]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [3]: (rows, cols) = np.where(M)
In [4]: vals = M[rows, cols]
In [5]: zip(rows, cols, vals)
Out[5]:
[(0, 1, 1),
(0, 2, 2),
(1, 0, 3),
(1, 1, 4),
(1, 2, 5),
(2, 0, 6),
(2, 1, 7),
(2, 2, 8)]
そして、以下は 1 に対して機能しますが、scipy.sparse が必要です
In [6]: import scipy.sparse as sp
In [7]: sp.coo_matrix((vals, (rows, cols))).todense()
Out[7]:
matrix([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])