如何编写返回它的numpy函数';python中的第k个对角线为0?

如何编写返回它的numpy函数';python中的第k个对角线为0?,python,numpy,Python,Numpy,以矩阵和整数k为参数的NumPy函数 并返回该矩阵的一个副本,使其所有元素 对角线为零。主对角线是第0条对角线,其上方的对角线是 编号为1,2。,下面的对角线是编号的−1.−2.就是1, 是主对角线上方的第一条对角线,2是主对角线上方的第二条对角线 主对角线等。−1是主对角线下方的第一条对角线,−2是 主对角线下方的第二对角线 例如: 我想我已经知道怎么画对角线了,但后来我被卡住了: def EX4(N): Z=np.zeros((N,N)) #create a array N x N wh

以矩阵和整数k为参数的NumPy函数 并返回该矩阵的一个副本,使其所有元素 对角线为零。主对角线是第0条对角线,其上方的对角线是 编号为1,2。,下面的对角线是编号的−1.−2.就是1, 是主对角线上方的第一条对角线,2是主对角线上方的第二条对角线 主对角线等。−1是主对角线下方的第一条对角线,−2是 主对角线下方的第二对角线

例如:

我想我已经知道怎么画对角线了,但后来我被卡住了:

def EX4(N):
Z=np.zeros((N,N))  #create a array N x N which contains only zero elements


#Set the diagonal to 1
for i in range(k,N):
     Z[i,i]=1 
return Z
k=1
例4(5)

您可以按照以下方法进行操作

z = np.zeros((4,4))

def f(k):
    for i in range(4):
        for j in range(4):
            if j > i + k:
                z[i,j] = 1


编辑:刚刚看到另一个答案。我不知道numpy有这个功能。最好使用numpy的方法,但是如果你想自己找到一种方法,我会把答案留在这里。

你可以按照下面的思路做一些事情

z = np.zeros((4,4))

def f(k):
    for i in range(4):
        for j in range(4):
            if j > i + k:
                z[i,j] = 1


编辑:刚刚看到另一个答案。我不知道numpy有这个功能。最好使用numpy的方法,但是如果您想自己找到一种方法,我会把答案留在这里。

您可能正在寻找,它正好支持这种行为

>>> import numpy as np
>>> x = np.array([[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]])
>>> np.triu(x, 0)
array([[1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1],
       [0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [0, 0, 0, 0, 1]])
>>> np.triu(x, 1)
array([[0, 1, 1, 1, 1],
       [0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [0, 0, 0, 0, 1],
       [0, 0, 0, 0, 0]])
>>> np.triu(x, 2)
array([[0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [0, 0, 0, 0, 1],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])

您可能正在寻找支持此行为的

>>> import numpy as np
>>> x = np.array([[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]])
>>> np.triu(x, 0)
array([[1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1],
       [0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [0, 0, 0, 0, 1]])
>>> np.triu(x, 1)
array([[0, 1, 1, 1, 1],
       [0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [0, 0, 0, 0, 1],
       [0, 0, 0, 0, 0]])
>>> np.triu(x, 2)
array([[0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [0, 0, 0, 0, 1],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])