9

を使用する場合pytables、(私が知る限り)scipy.sparseマトリックス形式はサポートされていないため、マトリックスを格納するには、たとえば、何らかの変換を行う必要があります。

def store_sparse_matrix(self):
    grp1 = self.getFileHandle().createGroup(self.getGroup(), 'M')
    self.getFileHandle().createArray(grp1, 'data', M.tocsr().data)
    self.getFileHandle().createArray(grp1, 'indptr', M.tocsr().indptr)
    self.getFileHandle().createArray(grp1, 'indices', M.tocsr().indices)

def get_sparse_matrix(self):
    return sparse.csr_matrix((self.getGroup().M.data, self.getGroup().M.indices, self.getGroup().M.indptr))

問題は、get_sparse関数が(ディスクからの読み取りに)時間がかかることです。私が正しく理解していれば、データをメモリに収める必要もあります。

他の唯一のオプションは、マトリックスを密な形式( )に変換してから通常どおりnumpy array使用するようです。pytablesしかし、これはかなり効率が悪いようですが、おそらくpytables圧縮自体を処理するのでしょうか?

4

1 に答える 1

2

Storeing numpy sparse matrix in HDF5 (PyTables)から借用すると、3 つの通常のオブジェクトである、、および属性scipy.sparseを使用して、配列を pytables 形式にマーシャリングできます。dataindiciesindptrnumpy.ndarray

于 2014-01-23T20:54:36.597 に答える