python - 仅在 dok_matrix 对象的一部分上使用 scipy.sparse.dok_matrix.setdiag
问题描述
假设我有一个(非常大的)稀疏矩阵作为 scipy.sparse.dok_matrix 对象。我想仅将子矩阵的对角线设置为某个值。我首先认为这样的事情会起作用:
import scipy.sparse as sp
dim = 20 # dim can go up to large numbers
A = sp.dok_matrix((num, num))
A[num//2:-1,num//2:-1].setdiag(2)
,但这只会导致一个空矩阵(因为矩阵在内部使用数组存储的方式,我想?)。我知道对于这个小例子,我可以setdiag
在整个矩阵上使用并在开头插入一个带有零的数组,但这对于更大的矩阵维度是不够的,因为数组会变得太大。我也试过:
A[num//2:-1,num//2:-1] = 2*sp.eye((num-1)//2)
这做了我想做的事,但太慢了。有没有办法更快地获得相同的结果(即不明确设置子矩阵的所有条目)?
解决方案
推荐阅读
- python - python将字符串转换为字节错误:ValueError:字节太长
- html - Big Cartel,Neat 主题,网站打开后如何消除特色产品图像上的模糊
- reactjs - reactjs中如何将状态值从子组件传递到另一个组件
- python - 如何在 python 中创建一个好的自定义日志记录级别?
- javascript - 如何在我的 cookie 表单中添加幻灯片效果?
- ios - 在 SwiftUI 中处理 NavigationView 内的 TabView 的最佳方法
- php - 如何验证发布请求是否来自我的网站?
- time-series - 为什么 Folium Time 滑块在 IE11 中不起作用?
- java - 是什么
html元素?以及如何用Java解析它? - python-sphinx - 如何确保在 Sphinx 文档中生成的所有索引都得到更正