Seite 1 von 1

Permanente in Numpy-Matrizen?

Verfasst: Samstag 2. Mai 2009, 23:35
von Leonidas
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 :)

Verfasst: Sonntag 3. Mai 2009, 10:07
von Darii
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])))

Verfasst: Montag 4. Mai 2009, 09:24
von CM
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