繁体   English   中英

如何在python中将矩阵的直径转换为零?

[英]How to convert diameter of matrix to zero in python?

我有一个矩阵,我想在 python 中将直径值转换为零。 你能帮助我吗?

矩阵:

array([[1, 0, 0, ..., 1, 0, 0],
       [0, 1, 0, ..., 0, 0, 0],
       [0, 0, 1, ..., 0, 0, 0],
       ...,
       [1, 0, 0, ..., 1, 0, 0],
       [0, 0, 0, ..., 0, 1, 0],
       [0, 0, 0, ..., 0, 0, 1]])

假设您的意思是对角线,请使用 enumerate 遍历列表,然后遍历子列表,并检查索引是否相等(这意味着您在对角线上),然后分配零,否则分配当前值。

mydata = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]

out=[]
for i,l in enumerate(mydata):
    n=[]
    for j,v in enumerate(l):
        if i==j:
            n.append(0)
        else:
            n.append(v)
    out.append(n)
for x in out:
    print(x)  
[0, 2, 3, 4]
[5, 0, 7, 8]   
[9, 10, 0, 12] 
[13, 14, 15, 0]

如果可能,请避免嵌套循环。

当您使用 numpy 的数组时,您可以使用

np.fill_diagonal(mydata, 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM