我试图循环一个矩阵来替换对角线上的每个数字(从左上角到右下角),用-5。我已经阅读了之前的问题和答案,我发现您可以使用... np.fill_diagonal(A, -5)
来获得答案。但是我试图使用if语句循环。任何人都可以帮助我开始吗?这是我的矩阵。
A = array([[1.2,3.4,10.3],[2,8,78],[45,-36,8]])
答案 0 :(得分:4)
这很容易。你的矩阵必须是方形的,否则它实际上没有“对角线”。对角线上的元素为A[i,i]
,因此您只需循环for i in range(N)
并为每个i设置A[i,i] = -5
。 (如果需要声明,则为否)
答案 1 :(得分:1)
如果我做对了,你想迭代列和行,所以(确实非常愚蠢):
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)
。
答案 2 :(得分:0)
您应该使用numpy
,但您的数组必须是numpy.array
或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. ]])