Mai mult
Transpunerea unei matrice NumPy
Eu folosesc Python și NumPy și au unele probleme cu "transpune":
import numpy as np
a = np.array([5,4])
print(a)
print(a.T)
Invocarea o.T
nu este de transpunere a unei matrice. Dacă " a " este, de exemplu, [[], []]
, apoi se transpune în mod corect, dar am nevoie de transpunerea a[...,...,...]
.
161
13
L's de lucru exact ca's ar trebui. Transpusa unei 1D matrice este încă un 1D matrice! (Daca're folosit pentru matlab, fundamental nu't au un concept de o 1D array. Matlab's "1D" matrice sunt 2D.)
Dacă vrei să-ți transformi 1D vector într-o matrice 2D și apoi de a o transpune, doar felie cu np.newaxis
(sau "Nici unul", au're la fel,
newaxis` este doar mai ușor de citit).În general, deși, nu't vreodată nevoie să vă faceți griji despre asta. Adăugarea dimensiune suplimentară este, de obicei, nu ceea ce vrei, daca're doar o face din obișnuință. Numpy automat va difuza un 1D array când fac diverse calcule. Nu's, de obicei, nu este nevoie să se facă distincția între un vector rând și un vector coloană (de care nici nu sunt vectors. Ei're atât 2D!) atunci când doriți doar un vector.
Utilizați două suportul de perechi în loc de una. Acest lucru creează o matrice 2D, care poate fi transpus, spre deosebire de 1D array creați dacă utilizați un suport pereche.
Mai aprofundată exemplu:
Utilizarea numpy's "forma" metoda de a vedea ce se întâmplă aici:
Pentru tablouri 1D:
Puteți converti un existent vector într-o matrice de ambalaj-l într-un extra set de paranteze drepte...
numpy, de asemenea, are o
matrix
clasă (a se vedea matrice vs matrix)...numpy 1D array --> coloana/rând matrice:
Și ca @joe-kington spus, puteți înlocui "Nici unul" cu `np.newaxis pentru lizibilitate.
La 'transpune' un 1d array de la un 2d coloană, puteți utiliza
numpy.vstack
:De asemenea, funcționează pentru vanilie liste:
Poți doar să transpună o matrice 2D. Puteți folosi numpy.matrice pentru a crea o matrice 2D. Acest lucru este de trei ani mai târziu, dar eu sunt doar adăugarea la set de posibile soluții:
O alta solutie.... :-)
Eu sunt doar consolidarea postul de mai sus, sper că va ajuta pe alții să salvați ceva timp:
Mai jos matrice a
(2, )
dimensiune, l's 1-D matrice,Există două moduri de a transpune o 1-D matrice:
felie cu "np.newaxis" sau nici unul.!
alt mod de a scrie, de mai sus, fără " T " operațiune.!
Ambalaj [ ] sau folosind np.matrix, înseamnă adăugând o nouă dimensiune.!
Transpusa de
este
ei bine, codul este:
acest link pentru mai multe informații:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html
în loc să utilizați arr[:,Nici unul] pentru a crea vector coloană
Ca unele dintre comentariile de mai sus, transpusa de tablouri 1D sunt tablouri 1D, deci, un mod de a transpune un 1D array ar fi pentru a converti matrice cu o matrice astfel:
Numele funcției în
numpy
este column_stack.