用于生成主对角线上方1的对角矩阵的Python代码

use*_*346 4 python numpy

我想编写一个python函数,它生成一个大小为n乘以n的零矩阵,对于主对角线上方的所有元素都有1.

这是我的代码:

def funtest(n):
    for i in range(0,n-2):
        s = (n,n)
        Y = zeros(s)
        Z = Y
        Z[i,i+1]=1          
return Z
Run Code Online (Sandbox Code Playgroud)

但结果只在矩阵的(n-1,n-2)元素中给出1.

我被卡住了,我真的认为我的代码是正确的,并且不知道错误在哪里.我该如何解决?有人可以帮忙吗?

谢谢.

Swi*_*ier 9

numpy.diag函数可以完成这个:

import numpy as np
print( np.diag(np.ones(4), 1) )
Run Code Online (Sandbox Code Playgroud)

用第二个参数(1)表示对角线的偏移量.它给:

array([[ 0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  0.]])
Run Code Online (Sandbox Code Playgroud)