我如何制作一个空心对称矩阵,在主对角线上有零,在 numpy 的其他地方

How do I make a hollow symmetric matrix with zeros in the main diagonal, ones elsewhere in numpy

在 Python numpy 中,如何制作一个空心对称矩阵,主对角线为零,其他地方为零?例如

import numpy as np
I = np.identity(8)  # the identity matrix
I

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

但我想要::

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

只需从 1 中减去单位矩阵:

1 - np.identity(size)

演示:

In [3]: np.identity(4)
Out[3]: 
array([[ 1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

In [4]: 1 - np.identity(4)
Out[4]: 
array([[ 0.,  1.,  1.,  1.],
       [ 1.,  0.,  1.,  1.],
       [ 1.,  1.,  0.,  1.],
       [ 1.,  1.,  1.,  0.]])