Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用if语句更改矩阵的对角线?_Python - Fatal编程技术网

Python 使用if语句更改矩阵的对角线?

Python 使用if语句更改矩阵的对角线?,python,Python,我试图循环遍历一个矩阵,将从左上到右下的对角线上的每个数字替换为-5。我已经阅读了以前的问题和答案,我发现你可以使用。。。np.fill_对角线a,-5得到答案。但是,我尝试使用if语句的循环。有人能帮我开始吗?这是我的矩阵 A = array([[1.2,3.4,10.3],[2,8,78],[45,-36,8]]) 这很容易。你的矩阵必须是正方形,否则它实际上没有对角线。对角线上的元素是A[i,i],因此您只需要在rangeN中为i循环,并为每个i设置A[i,i]=-5。没有必要的if

我试图循环遍历一个矩阵,将从左上到右下的对角线上的每个数字替换为-5。我已经阅读了以前的问题和答案,我发现你可以使用。。。np.fill_对角线a,-5得到答案。但是,我尝试使用if语句的循环。有人能帮我开始吗?这是我的矩阵

 A = array([[1.2,3.4,10.3],[2,8,78],[45,-36,8]]) 

这很容易。你的矩阵必须是正方形,否则它实际上没有对角线。对角线上的元素是A[i,i],因此您只需要在rangeN中为i循环,并为每个i设置A[i,i]=-5。没有必要的if语句

如果我做对了,你想在列和行上迭代,真是太傻了:

for i in A.shape[0]:
    for j in A.shape[1]:
        if i == j:
            A[i,j] = -5
虽然我不得不认为,如果你已经有了一个数组/矩阵,那么使用Mgilson的答案,或者更好的是使用numpy.fill\u diagonalarray,value,这是不必要的。

你应该使用numpy,但你的数组当然必须是numpy.array或numpy.matrix


你会用if语句测试什么?@heltonbiker-我猜OP想循环矩阵中的每个元素,测试I==j,如果是,更新。@user1754710:关键是你不需要if语句。如果您真的想这样做,请使用嵌套for循环,并在i==j时将值设置为-5。不要使用我的答案。使用np.fill\u对角线。谢谢,我很感激。这就是我要找的。
In [1]: import numpy as np
In [2]: A=np.random.random((3,3))
In [3]: A
Out[3]: 
array([[ 5.        ,  0.47884865,  0.8596375 ],
       [ 0.70925986,  5.        ,  0.29764543],
       [ 0.98049303,  0.13811067,  5.        ]])

In [4]: np.fill_diagonal(A, 5)

In [5]: A
Out[5]: 
array([[ 5.        ,  0.47884865,  0.8596375 ],
       [ 0.70925986,  5.        ,  0.29764543],
       [ 0.98049303,  0.13811067,  5.        ]])