Transponiere einen Vektor mit numpy

7

Ich habe ein Problem mit Ipython - Numpy. Ich möchte folgende Operation durchführen:

%Vor%

wobei x zu R ^ n gehört, und x ^ T die Transponieroperation auf Vektor x. x wird aus einer txt-Datei mit folgender Anweisung extrahiert:

%Vor%

Das Problem ist, dass wenn ich die Transponierfunktion verwende

%Vor%

und verwendet die Form-Funktion, um die Größe von x zu kennen, ich bekomme die gleichen Dimensionen für x und x ^ T. Numpy gibt die Größe mit einem Großbuchstaben L nach jeder Dimension an. z.B.

%Vor%

Weiß jemand, wie man das löst und x ^ T.x als Matrixprodukt berechnet?

Danke!

    
Alexandre Willame 08.10.2013, 02:21
quelle

6 Antworten

6

Wie von anderen erklärt, wird Transposition nicht so funktionieren, wie Sie es für 1D-Arrays wünschen. Möglicherweise möchten Sie np.atleast_2d verwenden, um eine konsistente Skalarproduktdefinition zu erhalten:

%Vor%     
Nathan 08.10.2013, 12:22
quelle
26

Was np.transpose macht, ist das Shape-Tupel umzukehren, dh Sie geben ihm ein Array von Form (m, n) , es gibt ein Array von Form (n, m) zurück, Sie füttern es ein Array von Form (n,) ... und Sie erhalten dasselbe Array mit der Form (n,) zurück.

Was Sie implizit erwarten, ist, dass numpy Ihren 1D-Vektor als 2D-Array mit der Form (1, n) annimmt, das in einen (n, 1) -Vektor transponiert wird. Numpy wird das nicht alleine machen, aber Sie können sagen, dass es das ist, was Sie wollen, z. B .:

%Vor%     
Jaime 08.10.2013 03:56
quelle
1

Für Starter L bedeutet nur, dass der Typ ein langer int ist. Dies sollte kein Problem sein. Sie müssen jedoch zusätzliche Informationen zu Ihrem Problem angeben, da ich es nicht mit einem einfachen Testfall reproduzieren kann:

%Vor%

Es ist wahrscheinlich etwas Subtiles in Ihrem speziellen Fall passiert, das Probleme verursacht. Können Sie den Inhalt der Datei, die Sie lesen, in x ?

posten?     
JoshAdel 08.10.2013 02:41
quelle
1

Ich hatte das gleiche Problem, ich habe eine numpige Matrix benutzt, um es zu lösen:

%Vor%

Obwohl die Verwendung nummerischer Matrizen möglicherweise nicht der beste Weg ist, um Ihre Daten aus einer Codierperspektive darzustellen, ist es ziemlich gut, wenn Sie viele Matrixoperationen durchführen wollen!

    
david 04.12.2015 03:58
quelle
1

Dies ist entweder das innere oder äußere Produkt der beiden Vektoren, abhängig von der Ausrichtung, die Sie ihnen zuweisen. So berechnen Sie, ohne x zu ändern.

%Vor%     
chthonicdaemon 04.12.2015 04:18
quelle
0

Die Datei 'myfile.txt' enthält Zeilen wie

%Vor%

Hier ist der Code, den ich ausführe:

%Vor%

Und ich bekomme als Ergebnis

%Vor%

Ich würde erwarten, dass eines der beiden letzten Ergebnisse ein Skalar anstelle eines Vektors ist, weil x ^ T.x (oder x.x ^ T) einen Skalar ergeben sollte.

    
Alexandre Willame 08.10.2013 03:54
quelle

Tags und Links