Seite 1 von 1

Numpy sqrt

Verfasst: Samstag 12. September 2009, 16:33
von mzh
Hallo zusammen

Ich habe ein numpy.array wie folgt:

Code: Alles auswählen

>>> To
array([[ 1.5017,  0.    ],
       [ 0.    ,  0.4983]])
Ich möchte jetzt gerne die inverse Quadratwurzel nur von den Diagonalelementen nehmen (^(-1/2)).

Code: Alles auswählen

>>> 1/numpy.sqrt(To)
Warning: divide by zero encountered in divide
array([[  8.16034292e-001,               inf],
       [              inf,   1.41662387e+000]])
Tja, etwas schlaueres als numpy.ravel(To) - for loop mit if(diagonalelement) - numpy.reshape() fällt mir nicht ein.

Wäre toll, wenn mir jemand einen schlauen Hinweis geben könnte.

Verfasst: Samstag 12. September 2009, 17:49
von HWK

Code: Alles auswählen

>>> a = numpy.array([[1.5017, 0.], [0., 0.4983]])
>>> numpy.where(numpy.identity(len(a)), 1 / numpy.sqrt(a), a)
array([[ 0.81603429,  0.        ],
       [ 0.        ,  1.41662387]])
MfG
HWK

Verfasst: Samstag 12. September 2009, 18:45
von mzh
wunderbar, thanks.