Python:矩阵的非对角元素为0

Prg*_*gmr 5 python numpy matrix multidimensional-array diagonal

将方形对称 numpy ndarray 的非对角元素转换为 0 的最快方法是什么?

650*_*502 4

我会检查保存对角线的速度,然后修改矩阵,然后恢复对角线:

n = len(mat)
d = mat.ravel()[::n+1]
values = d.copy()
mat[:,:] = 0
d[:] = values
Run Code Online (Sandbox Code Playgroud)

如果矩阵不大,那么分配一个新矩阵可能会更快

mat = numpy.diag(numpy.diag(mat))
Run Code Online (Sandbox Code Playgroud)