python矩阵处理库_用于处理非常大的矩阵的Python库

什么是用于处理非常大的矩阵(例如数百万行/列)的优秀

Python库,包括在矩阵生命的任何阶段添加行或列的能力?

我查看过pytables和h5py,但是一旦创建了矩阵,它们都不支持添加或删除行或列.

我能找到的另一件事是these questions中提到的numpy / scipy中的稀疏矩阵功能.但是,添加/删除行和列的能力似乎可能但是官方不支持和有点hacky,所以我担心性能会真正的数据集是可怕的.此外,它包括几个不同的稀疏矩阵实现,所以我很困惑哪一个是最好的(例如lil_matrix vs csc_matrix vs csr_matrix).

最佳答案 如果您的矩阵是稀疏的,您可以添加或删除行或列,而不用使用scipy.sparse进行操作.如果要删除列(进行列切片),则应该使用csc_matrix,而csr_matrix应该用于有效的行切片.通常使用coo_matrix类型创建稀疏矩阵很方便,您可以在其中为每个非零条目指定行,列和数据:

m = coo_matrix((data, (row, col)), shape=(nrow, ncol))

m = m.to_csr()[rows_to_keep, :]

m = m.to_csc()[:, cols_to_keep]

其中rows_to_keep可以是列表或具有要保留的索引的1-D数组.

如果需要密集矩阵,可以使用numpy.memmap()数组.要创建一个,你可以做:

a = np.memmap('test.memmap', dtype='float64', mode='w+', shape=(1000, 1000))

a.fill(100.)

要阅读一个你可以做的:

a = np.memmap('a.memmap', dtype='float64', mode='r+', shape=(1000, 1000))

如果要删除或添加行和列,则必须创建第二个memmap数组,然后从原始列分配所需的列:

b = np.memmap('b.memmap', dtype='float64', mode='w+', shape=(3, 1000))

b = a[[0, 99, 199], :]

这将在b中保存所有列的第一行,第100行和第200行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值