python - 使用 pytables,哪个更有效 : scipy. 稀疏矩阵或 numpy 密集矩阵?

标签 python numpy scipy sparse-matrix pytables

使用 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 会处理压缩本身?

最佳答案

借自Storing numpy sparse matrix in HDF5 (PyTables) ,您可以使用 dataindiciesindptr 属性将 scipy.sparse 数组编码为 pytables 格式,这是三个常规的 numpy.ndarray 对象。

关于python - 使用 pytables,哪个更有效 : scipy. 稀疏矩阵或 numpy 密集矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8895120/

相关文章:

python - 从python中的最后一个非零条目计算累计和

Python fmin 太慢

python - 'python setup.py install' 和 'pip install' 之间的区别

python - 图像抽取后的异常直方图

python-2.7 - 运行 flopy.modflow.HeadObservation : ValueError: Can't cast from structure to non-structure, 时出错,除非该结构只有一个字段

python - 如何在学习中使用 Mann-Whitney U 检验

python - 获得包含折线图的两个图像的相似性度量的好方法是什么?

python - 协程中的异步运行时错误 : no running event loop

python - 如何重新启动 python 脚本,无论它们退出或崩溃的原因如何?

python - 如何创建一个循环来读取 python 脚本中的多个图像?