Numpy: äußeres Produkt von n Vektoren

8

Ich versuche, etwas Einfaches in Anzahlen zu machen, und ich bin mir sicher, dass es einen einfachen Weg dafür geben sollte.

Grundsätzlich habe ich eine Liste von n Vektoren mit verschiedenen Längen. Wenn v1[i] der i 'te Eintrag des ersten Vektors ist, dann möchte ich ein n -dimensionales Array, A, finden, so dass

%Vor%

Mein Problem ist das:

  1. outer benötigt nur zwei Vektor Argumente.

  2. einsum benötigt einen Parameter wie "abcd ...", der unnötig erscheint.

  3. kron erfordert eine ziemlich komplexe Umformung und benötigt nur zwei Argumente.

Ich möchte so viel Komplexität wie möglich vermeiden, um Bugs zu vermeiden. Also am liebsten hätte ich einen einzigen Befehl.

Bis jetzt ist das Beste, was ich habe mit:

%Vor%     
Lucas 16.06.2013, 22:38
quelle

2 Antworten

8

Sie verwenden folgenden Zeilencode:

%Vor%

np.ix_() übernimmt die äußere Übertragung, Sie müssen reduzieren, aber Sie können die Funktion ufunc np.multiply ohne Lambda übergeben.

Hier ist der Vergleich:

%Vor%

Das reuslt:

%Vor%     
HYRY 17.06.2013, 00:34
quelle
1

Es gibt eine alternative Codezeile:

%Vor%

Es ist für mich transparenter als np.ix_(*vs) Konstruktion und unterstützt mehrdimensionale Arrays wie in diese Frage .

>

Timings sind innerhalb einer Toleranz gleich:

%Vor%     
ybeltukov 11.12.2016 11:46
quelle

Tags und Links