【发布时间】:2014-01-06 05:38:31
【问题描述】:
我正在尝试在 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)
但我不知道如何处理第二项和第三项,我知道它们将填充对角线元素上方和下方的值,值为-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,那么我可以使用哪些其他软件包来解决我的问题?
【问题讨论】:
-
在未来 (
numpy version 1.10),您将能够通过numpy.diagonal轻松地做到这一点。不幸的是,未来还没有到来...... -
现在是here
标签: python matlab numpy matrix