Matryca transponują za pomocą Numpy

Matryca transponują za pomocą Numpy

W tym poście widzimy, w jaki sposób można wykonywać operację transpozycji macierzy za pomocą Numpy. Operacja transpozycyjna to operacja na matrycy tak, że odwraca matrycę na przekątną. Matryca transponują 2-D tablicę wymiaru N * M.

$ Python3
Python 3.8.5 (domyślnie, 8 marca 2021, 13:02:45)
[GCC 9.3.0] na Linux2

Wpisz „Pomoc”, „Copyright”, „Kredyty” lub „Licencja”, aby uzyskać więcej informacji.

>>> Importuj Numpy jako NP
>>> a = np.tablica ([[1, 2, 3],
… [4, 5, 6]])
>>> a.kształt
(2, 3)
>>> c = a.transponować()
>>> c
tablica ([[1, 4],
[2, 5],
[3, 6]])
>>> c.kształt
(3, 2)

Matryca transponująca na tablicy 1-D nie ma wpływu, ponieważ transpozycja jest taka sama jak oryginalna tablica.

>>> a = np.te (3)
>>> a
tablica ([1., 1., 1.])
>>> a.kształt
(3)
>>> a_transpose = a.Transpose () # Transpose z tablicy 1-D
>>> A_transpose
tablica ([1., 1., 1.])
>>> A_transpose.kształt
(3)

Aby przekonwertować tablicę 1-D na jego transpozycję jako wektor 2-D, należy dodać dodatkową oś. Kontynuując poprzedni przykład, NP.Newaxis może utworzyć nowy wektor kolumny 2-D z wektora 1-d.

>>> a
tablica ([1., 1., 1.])
>>> [NP.newaxis,:]
tablica [[[1., 1., 1.]])
>>> [NP.newaxis,:].kształt
(1, 3)
>>> a [:, np.Newaxis]
tablica [[[1.],
[1.],
[1.]])
>>> a [:, np.Newaxis].kształt
(3, 1)

Operacja transpozycyjna w tablicy również przyjmuje osie argumentu. Jeśli osie argumentu nie są, operacja transpozycji odwraca kolejność osi.

>>> a = np.Arange (2 * 3 * 4).Reshape (2, 3, 4)
>>> a
tablica ([[[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]))
>>> a_t = a.transponować()
>>> a_t
tablica ([[[0, 12],
[4, 16],
[8, 20]],
[[1, 13],
[5, 17],
[9, 21]],
[[2, 14],
[6, 18],
[10, 22]],
[[3, 15],
[7, 19],
[11, 23]]])
>>> a.kształt
(2, 3, 4)
>>> a_t.kształt
(4, 3, 2)

W powyższym przykładzie wymiar macierzy A wynosił (2, 3, 4), a po transpozycji stał się (4, 3, 2). Domyślna reguła transponująca odwraca oś macierzy wejściowej I.e at [i, j, k] = a [k, j, i].

Tę domyślną permutację można zmienić, przekazując krotność liczb całkowitych jako argument wejściowy do transpozycji. W poniższym przykładzie J w miejscu krotki oznacza, że ​​A ithis A Axis stanie się.Transpose () oś. Kontynuując poprzedni przykład, przekazujemy argumenty (1, 2, 0) do a.transponować(). W ten sposób przestrzegana tutaj reguła transpozycji jest w [i, j, k] = a [j, k, i].

>>> a_t = a.transponuj ((1, 2, 0))
>>> a_t.kształt
(3, 4, 2)
>>> a_t
tablica ([[[0, 12],
[1, 13],
[2, 14],
[3, 15]],
[[4, 16],
[5, 17],
[6, 18],
[7, 19]],
[[8, 20],
[9, 21],
[10, 22],
[11, 23]]])