Python 使用if语句更改矩阵的对角线?
我试图循环遍历一个矩阵,将从左上到右下的对角线上的每个数字替换为-5。我已经阅读了以前的问题和答案,我发现你可以使用。。。np.fill_对角线a,-5得到答案。但是,我尝试使用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
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. ]])