Permanente in Numpy-Matrizen?

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hi,

ich habe mir heute NumPys Matrizen angeschaut (nett, das per Hand zu rechnen ist schrecklich lästig und zum experimentieren mit zahlen geht es wesentlich schneller als in Maple, Matlab, Octave und Co), aber ich frage mich ob es da auch irgeneine eingebaute Funktion gibt um die Permanente zu bestimmen. Klar, das kann man auch selbst programmieren, nur wozu :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Nicht dass ich wüsste. Ansonsten ist das ja ein Einzeiler ;)

Code: Alles auswählen

sum(reduce(mul, (m[i,perm[i]] for i in range(m.shape[0]))) for perm in permutations(range(m.shape[0])))
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Selber schreiben muß wohl leider sein - wäre vielleicht ein feature request wert?

Mein Vorschlag:

Code: Alles auswählen

prod(m.diagonal()) + prod(m[::-1].diagonal())
wenn m eine 2x2 matrix ist - sonst entsprechend länger. Entsprechende imports von numpy natürlich vorausgesetzt. Ich weiß nicht welche Lösung schneller ist, aber ich finde meine lesbarer, weil IMHO eine direkte Übersetzung der Definition :oops:

HTH
Christian
Antworten