bugfix> python > 投稿

dokマトリックスを保存して、後で再度ロードするにはどうすればよいですか?

import scipy.sparse as sp
mat = sp.dok_matrix((df.shape[0], len(df['itemid'].unique())), dtype=np.float32)
for buyerid, itemid in zip(df['buyerid'], df['itemid']):
    mat[buyerid, itemid] = 1.0
# my try
sp.save_npz('/content/gdrive/My Drive/train_matrix.npz', mat)
.
.
.
# Loading the dok matrix
train_mat = sp.load_npz('spotify_train_matrix.npz')

エラー

/usr/local/lib/python3.6/dist-packages/scipy/sparse/_matrix_io.py in save_npz(file, matrix, compressed)
     69         arrays_dict.update(row=matrix.row, col=matrix.col)
     70     else:
---> 71         raise NotImplementedError('Save is not implemented for sparse matrix of format {}.'.format(matrix.format))
     72     arrays_dict.update(
     73         format=matrix.format.encode('ascii'),
NotImplementedError: Save is not implemented for sparse matrix of format dok.

誰かが私が作成しているdokマトリックスを保存してロードするのを手伝ってくれませんか?

回答 1 件
  • お気づきのように、できません。しかし、上のメモ dok_matrix いう:

    Can be efficiently converted to a coo_matrix once constructed.

    そして coo_matrix で保存をサポートします scipy.sparse.save_npz 。だから私はで変換することをお勧めします .tocoo() そして保存します。ロード後に元に戻すことができます(必要に応じて)。

あなたの答え