python 对角阵_python-Numpy分区对角矩阵

本文介绍如何在Python中使用Numpy库高效地创建分区对角矩阵,通过Scipy的sparse模块避免循环,展示了一种构建复杂对角矩阵的技巧。
摘要由CSDN通过智能技术生成

我想像这样生成分区对角矩阵A

给出矩阵B

B = -np.diag(np.ones(n - 2), -1) - np.diag(np.ones(n - 2), 1) + 4 * np.diag(np.ones(n - 1))

例如,

有没有一种方法可以不使用循环?

抱歉,第一次错误地上传了矩阵A和B的图形.

解决方法:

您可以将构建块堆叠到查找表中,然后通过在其中建立索引来构建A:

>>> from scipy import sparse

>>>

>>> n = 5

>>> B = sparse.diags([-1, 4, -1], [-1, 0, 1], (n-1, n-1), dtype=int).A

>>> A = sparse.diags([1, 2, 1], [-1, 0, 1], (n-1, n-1), dtype=int).A

# 0 means 0 0 0 ...,

# 1 means -I

# 2 means B

>>>

# next line builds the lookup table (using np.stack)

# does the lookup ...[A]

# and flattens the resulting 4D array after swapping

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值