python - 在 python 的 100 x 100 矩阵中,填充非对角线元素

标签 python matlab numpy matrix

我正在尝试填充 100x100 矩阵上的非对角线元素,如下面的 matlab 代码所示,那么如何在 python 中复制它。

T=(2*t0*diag(ones(1,100)))-(t0*diag(ones(1,99),1))-(t0*diag(ones(1,99),-1))

所以我知道 RHS 的第一项将用值 2*t0 填充矩阵的对角线,

我在 python 中的操作如下:

x = np.zeros((100,100))
np.fill_diagonal(x,2*t0)

但是我不知道第2项和第3项是怎么做的,我知道它们会用-t0的值填充对角线元素上方和下方的值,而不是全部关闭对角线值,但只用-t0填充对角线的上下值,其余均为零,但我不知道如何为其编写python代码。

我找到了这段代码:

# diagonal with offset from the main diagonal
diag([1,2,3], k=1) 

将输出为:

array([[0, 1, 0, 0],
[0, 0, 2, 0],
[0, 0, 0, 3],
[0, 0, 0, 0]])

但是如何像我的问题一样将它应用于大型矩阵呢? 我在交互式 python 中工作,即 Anaconda,那么我可以使用哪些其他包来解决我的问题?

最佳答案

根据您在此处提供的 np.diag,很容易做到:

a = np.ones((1, 100))[0]
b = np.ones((1, 99))[0]
m = np.diag(a, 0) + np.diag(b, -1) + np.diag(b, 1)

m 这里是 100x100 三对角矩阵

更新:

我找到了一个链接 here类似的问题,也看看。

关于python - 在 python 的 100 x 100 矩阵中,填充非对角线元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20651432/

相关文章:

matlab - 如何为伪随机数生成器设置自定义种子

python - 保存数组中每个时间戳之间的时间量

python - boto3 s3 复制对象错误

python - 如何更改 django wagtail 的管理 Logo

python - Python诅咒-以很好的方式获取错误文本

python - 比较两个字典列表

matlab - 使用 cell2mat 将数字矩阵与字符串向量(列标签)连接起来的问题

excel - Matlab xlsread 打开文件并清理

python - 多变量的 Polyval

python 3 : eval() with custom dict not evaluating numbers