我正在尝试遍历矩阵以用-5替换沿对角线(左上角到右下角)的每个数字。我已阅读以前的问题和答案,我看到您可以使用...np.fill_diagonal(A, -5)
来获得答案。但是我正在尝试使用带有 if 语句的循环。谁能帮我开始?这是我的矩阵。
A = array([[1.2,3.4,10.3],[2,8,78],[45,-36,8]])
我正在尝试遍历矩阵以用-5替换沿对角线(左上角到右下角)的每个数字。我已阅读以前的问题和答案,我看到您可以使用...np.fill_diagonal(A, -5)
来获得答案。但是我正在尝试使用带有 if 语句的循环。谁能帮我开始?这是我的矩阵。
A = array([[1.2,3.4,10.3],[2,8,78],[45,-36,8]])
这很容易。您的矩阵必须是方形的,否则它实际上没有“对角线”。对角线上的元素是A[i,i]
,所以你只需要循环for i in range(N)
并A[i,i] = -5
为每个 i 设置。(没有必要的陈述)
如果我做对了,你想遍历列和行,所以(确实很傻):
for i in A.shape[0]:
for j in A.shape[1]:
if i == j:
A[i,j] = -5
尽管我不得不认为如果您已经有一个数组/矩阵,那么就不需要这样做了,然后使用 Mgilson 的答案,或者更好的是numpy.fill_diagonal(array, value)
.
您应该使用numpy
,但是您的数组必须是 a numpy.array
or numpy.matrix
。
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. ]])