Python 如何在numpy数组中将具有相同行和列的值设置为零?
我有一个基本原则如下“ 如果索引具有相同的列和行,则将该值设置为零Python 如何在numpy数组中将具有相同行和列的值设置为零?,python,numpy-ndarray,Python,Numpy Ndarray,我有一个基本原则如下“ 如果索引具有相同的列和行,则将该值设置为零 rows = x.shape[0] cols = x.shape[1] for k in range(0, rows): for y in range(0, cols): if k==y: x[k,y]=0 预期产出: array([[ 0, 2, 3], [ 4, 0, 6], [ 4, 1, 0], [ 1, 5, 11
rows = x.shape[0]
cols = x.shape[1]
for k in range(0, rows):
for y in range(0, cols):
if k==y:
x[k,y]=0
预期产出:
array([[ 0, 2, 3],
[ 4, 0, 6],
[ 4, 1, 0],
[ 1, 5, 11],
[ 4, 3, 4]])
有没有什么简单的方法可以达到同样的效果?我的实际矩阵非常大…使用:
我不知道填充对角线可能适用于非对称矩阵。谢谢!
array([[ 0, 2, 3],
[ 4, 0, 6],
[ 4, 1, 0],
[ 1, 5, 11],
[ 4, 3, 4]])
x = np.array([[1, 2, 3], [4, 5, 6],[4, 1, 6],[1, 5, 11],[4,3, 4]], np.int32)
np.fill_diagonal(x,0)
print(x)
array([[ 0, 2, 3],
[ 4, 0, 6],
[ 4, 1, 0],
[ 1, 5, 11],
[ 4, 3, 4]], dtype=int32)