首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >稀疏矩阵模式上的Scipy边界条件

稀疏矩阵模式上的Scipy边界条件
EN

Stack Overflow用户
提问于 2012-04-27 03:56:57
回答 1查看 582关注 0票数 4

我的系统用对角线稀疏矩阵(泊松)来描述是最好的。我有我的对角稀疏矩阵,但是,我想将边界条件(即矩阵的“边”)改为零。这一定是一种常见的情况,建模者想要用具有不同边界条件的稀疏对角矩阵来描述系统,有没有这样做的最佳实践?

代码语言:javascript
运行
复制
[[0,0,0,0,..0],
 [0,2,1,0,..0],
 [0,1,2,1,..0],
 ...
 [0,0,0,0,..0]]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-27 04:30:57

这取决于您使用的稀疏矩阵格式。显然,lil_matrix and dok_matrix可以使用切片赋值。

要有效地构造矩阵,请使用lil_matrix (推荐)或dok_matrix。lil_matrix类使用类似于NumPy数组的语法支持基本切片和花哨的索引。

这使得这件事变得相当简单:

代码语言:javascript
运行
复制
In : x = scipy.sparse.lil_matrix(np.ones((6,6)))

In : x.todense()
Out:
matrix([[ 1.,  1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.,  1.,  1.]])

In : x[:, 0] = 0

In : x[:, -1] = 0

In : x[0, :] = 0

In : x[-1, :] = 0

In : x.todense()
Out:
matrix([[ 0.,  0.,  0.,  0.,  0.,  0.],
        [ 0.,  1.,  1.,  1.,  1.,  0.],
        [ 0.,  1.,  1.,  1.,  1.,  0.],
        [ 0.,  1.,  1.,  1.,  1.,  0.],
        [ 0.,  1.,  1.,  1.,  1.,  0.],
        [ 0.,  0.,  0.,  0.,  0.,  0.]])

PS:仅供参考,您的矩阵称为tridiagonal,而不是对角线。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10340517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档