一尘不染

numpy fill_diagonal返回None

python

我想生成对称的零对角矩阵。我的对称零件正常工作,但是当我从numpy使用fill_diagonal作为结果时,结果为“无”。我的代码如下。感谢您的阅读

import numpy as np
matrix_size = int(input("Size of the matrix \n"))
random_matrix = np.random.random_integers(-4,4,size=(matrix_size,matrix_size))
symmetric_matrix = (random_matrix + random_matrix.T)/2
print(symmetric_matrix)
zero_diogonal_matrix = np.fill_diagonal(symmetric_matrix,0)
print(zero_diogonal_matrix)

阅读 352

收藏
2021-01-20

共1个答案

一尘不染

np.fill_diagonal()与跨python / numpy的许多其他方法一样,它可以就地工作。例如:为什么“ return
list.sort()”返回None,而不返回列表?。那是因为它直接更改了内存中的对象,而不创建新对象。这些函数的返回值为None。因此,请更改:

zero_diogonal_matrix = np.fill_diagonal(symmetric_matrix,0)

只是:

np.fill_diagonal(symmetric_matrix,0)

然后,您将看到反映在中的更改symmetric_matrix

2021-01-20