2017-10-09 13 views
0

En Python numpy, comment faire une matrice symétrique creuse avec des zéros dans la diagonale principale, ailleurs? par exemple.Comment faire une matrice symétrique creuse avec des zéros dans la diagonale principale, ailleurs dans 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.]]) 

mais je voudrais ::

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

Répondre

2

Juste Soustraire la matrice d'identité de 1:

1 - np.identity(size) 

Démo:

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.]]) 
+0

Ooohh, c'est facile et le sentiment un peu bête ici !! Ha ha. Réservoirs pour votre réponse rapide !! – npross