Numpy fill_对角线返回非

2024-10-01 09:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想生成对称的零对角矩阵。我的对称部分起作用,但是当我使用numpy的fill_对角线作为结果时,我得到了“None”。我的代码在下面。谢谢你的阅读

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)

Tags: 代码numpynonesizenp矩阵randomfill
2条回答

这可能有点过头了,但是如果你想保持最小化惊喜的原则,你可以把它(和其他类似的函数)包装在一个函数中,该函数负责保存原始数组:

def fill_diagonal(source_array, diagonal):
    copy = source_array.copy()
    np.fill_diagonal(copy, diagonal)
    return copy

但问题就变成了“谁会对这样做最不惊讶?”

np.fill_diagonal()与python/numpy中的许多其他方法一样,都可以正常工作。例如:Why does “return list.sort()” return None, not the list?。也就是说,它直接改变内存中的对象,而不创建新对象。这些函数的返回值是None。因此,改变:

zero_diogonal_matrix = np.fill_diagonal(symmetric_matrix,0)

只是:

^{pr2}$

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

相关问题 更多 >