Ich bin etwas verwirrt über die Auswahl einer Spalte eines NumPy-Array, weil das Ergebnis unterscheidet sich von Matlab und sogar von NumPy-Matrix. Bitte beachten Sie die folgenden Fälle. In Matlab verwenden wir den folgenden Befehl, um einen Spaltenvektor aus einer Matrix auszuwählen.Auswählen einer Spalte eines Arrays
x = [0, 1; 2 3]
out = x(:, 1)
Dann wird aus [0; 2]
, die einen Spaltenvektor ist.
, das Gleiche zu tun mit eine NumPy Matrix
x = np.matrix([[0, 1], [2, 3]])
out = x[:, 0]
Dann ist der Ausgang np.matrix([[0], [2]])
ist, das erwartet wird, und es ist ein Spaltenvektor.
Jedoch im Falle von NumPy Array
x = np.array([[0, 1], [2, 3]])
out = x[:, 0]
Die Ausgabe ist, die 1 np.array([0, 2])
dimensional ist, so ist es nicht ein Spaltenvektor. Meine Erwartung ist, dass es np.array([[0], [2]])
hätte sein sollen. Ich habe zwei Fragen.
1.Warum unterscheidet sich die Ausgabe des NumPy-Array-Falls von der NumPy-Matrix? Das verursacht mir eine Menge Verwirrung, aber ich denke, es könnte einen Grund dafür geben.
2.Um einen Spaltenvektor von einem 2-Dim NumPy Array zu bekommen, dann sollte ich tun, zusätzliche Dinge wie expand_dims
x = np.array([[0, 1], [2, 3]])
out = np.expand_dims(x[:, 0], axis = 1)
Aufgrund der Funktionsweise von Broadcasting ist es nicht wichtig, ob ein 1-D-Vektor eine Zeile oder eine Spalte ist. Benutze es einfach wie du willst. –