gpt4 book ai didi

python - 如何在 scipy 中定义 (n, 0) 稀疏矩阵或如何按列组装稀疏矩阵?

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:45 25 4
gpt4 key购买 nike

我有一个循环,在每次迭代中给我一个稀疏矩阵 N 的列 c

要逐列组装/增长/累积 N 我想到了使用

N = scipy.sparse.hstack([N, c]) 

为此,最好用长度为 0 的行初始化矩阵。但是,

N = scipy.sparse.csc_matrix((4,0))

引发 ValueError: invalid shape

有什么建议,如何正确执行此操作?

最佳答案

你不能。与 NumPy 数组相比,稀疏矩阵受到限制,特别是不允许 0 用于任何轴。所有稀疏矩阵构造函数都会对此进行检查,因此如果您确实设法构建了这样一个矩阵,那么您就是在利用 SciPy 错误,并且您的脚本可能会在升级 SciPy 时中断。

话虽如此,我不明白为什么您需要一个 n × 0 稀疏矩阵,因为允许使用 n × 0 NumPy 数组并且几乎不占用存储空间。

原来 sparse.hstack 无法处理具有零轴的 NumPy 数组,所以请忽略我之前的评论。但是,我认为您应该做的是收集列表中的所有列,然后在一次调用中 hstack 它们。这比你的循环要好,因为 append 到一个列表需要摊销常数时间,而 hstack 需要线性时间。因此,您提出的算法可能是线性的,但需要二次方时间。

关于python - 如何在 scipy 中定义 (n, 0) 稀疏矩阵或如何按列组装稀疏矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194214/

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