Numpy sqrt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

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.
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

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
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

wunderbar, thanks.
[url=http://www.proandkon.com]proandkon.com[/url]
Antworten