gpt4 book ai didi

python - 将稀疏 scipy 矩阵加载到现有的 numpy 稠密矩阵中

转载 作者:行者123 更新时间:2023-11-30 23:46:24 26 4
gpt4 key购买 nike

假设我有一个巨大的 numpy 矩阵 A 占用了数十 GB。分配此内存需要花费不可忽略的时间。

假设我还有一组与 numpy 矩阵具有相同维度的 scipy 稀疏矩阵。有时我想将这些稀疏矩阵之一转换为稠密矩阵来执行一些矢量化操作。

我可以将这些稀疏矩阵之一加载到 A 中,而不是每次将稀疏矩阵转换为稠密矩阵时都重新分配空间吗? scipy 稀疏矩阵上可用的 .toarray() 方法似乎没有采用可选的密集数组参数,但也许还有其他方法可以做到这一点。

最佳答案

如果稀疏矩阵是COO格式:

def assign_coo_to_dense(sparse, dense):
dense[sparse.row, sparse.col] = sparse.data

如果是CSR格式:

def assign_csr_to_dense(sparse, dense):
rows = sum((m * [k] for k, m in enumerate(np.diff(sparse.indptr))), [])
dense[rows, sparse.indices] = sparse.data

为了安全起见,您可能需要将以下行添加到上述每个函数的开头:

assert sparse.shape == dense.shape
dense[:] = 0

关于python - 将稀疏 scipy 矩阵加载到现有的 numpy 稠密矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9041236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com