Jeg bruker Python og NumPy og har noen problemer med å "transponere":
import numpy as np
a = np.array([5,4])
print(a)
print(a.T)
Å påkalle a.T
transponerer ikke matrisen. Hvis a
er for eksempel [[],[]]
så transponeres det riktig, men jeg trenger transponeringen av [...,...,...]
.
Det fungerer akkurat som det skal. Transponering av en 1D array er fortsatt en 1D array! (Hvis du' er vant til matlab, har det i utgangspunktet ikke et konsept med en 1D-array. Matlab&# 39s " 1D " matriser er 2D).
Hvis du vil gjøre 1D-vektoren din til en 2D-array og deretter transponere den, er det bare å skjære den med np.newaxis
(eller None
, de er de samme, newaxis
er bare mer lesbar).
import numpy as np
a = np.array([5,4])[np.newaxis]
print(a)
print(a.T)
Generelt sett trenger du imidlertid ikke å bekymre deg for dette. Å legge til den ekstra dimensjonen er vanligvis ikke det du ønsker, hvis du bare gjør det av vane. Numpy vil automatisk kringkaste en 1D-matrise når du gjør forskjellige beregninger. Det er vanligvis ikke nødvendig å skille mellom en radvektor og en kolonnevektor (ingen av dem er vektorer. De er begge 2D!) når du bare vil ha en vektor.
Bruk to par parenteser i stedet for én. Dette oppretter en 2D-matrise, som kan transponeres, i motsetning til 1D-matrisen du oppretter hvis du bruker ett brakettpar.
import numpy as np
a = np.array([[5, 4]])
a.T
Mer grundig eksempel:
>>> a = [3,6,9]
>>> b = np.array(a)
>>> b.T
array([3, 6, 9]) #Here it didn't transpose because 'a' is 1 dimensional
>>> b = np.array([a])
>>> b.T
array([[3], #Here it did transpose because a is 2 dimensional
[6],
[9]])
Bruk numpys form
-metode for å se hva som skjer her:
>>> b = np.array([10,20,30])
>>> b.shape
(3,)
>>> b = np.array([[10,20,30]])
>>> b.shape
(1, 3)
Du kan konvertere en eksisterende vektor til en matrise ved å pakke den inn i et ekstra sett med hakeparenteser ...
from numpy import *
v=array([5,4]) ## create a numpy vector
array([v]).T ## transpose a vector into a matrix
numpy har også en matrix
klasse (se array vs. matrix)...
matrix(v).T ## transpose a vector into a matrix