我想填充100x100矩陣上的對角線元素,如下面的matlab代碼所示,所以如何在python中複製它。在蟒蛇100×100的矩陣中,填充掉對角線元素
T=(2*t0*diag(ones(1,100)))-(t0*diag(ones(1,99),1))-(t0*diag(ones(1,99),-1))
所以我知道RHS的第一項將填補對角矩陣與價值2*t0
,
我在蟒蛇操作如下:
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']很容易地做到這一點(http://docs.scipy.org/doc/numpy/reference/generated/ numpy.diagonal.html#numpy.diagonal)。不幸的是,未來還沒有到這裏呢...... – mgilson
未來就是[這裏](https://stackoverflow.com/a/35022497/1150462)現在 – xuhdev