Matrix traspone usando numpy

Matrix traspone usando numpy

In questo post, vediamo come l'operazione di trasposizione di matrice può essere eseguita usando numpy. L'operazione di trasposizione è un'operazione su una matrice in modo tale da capovolgere la matrice sulla diagonale. La matrice traspone su un array 2-D di dimensione n * m produce una matrice di uscita di dimensione m * n.

$ Python3
Python 3.8.5 (impostazione predefinita, 8 marzo 2021, 13:02:45)
[GCC 9.3.0] su Linux2

Digita "Guida", "Copyright", "Credit" o "Licenza" per ulteriori informazioni.

>>> Importa Numpy come NP
>>> a = np.Array ([[1, 2, 3],
... [4, 5, 6]])
>>> a.forma
(2, 3)
>>> c = a.trasporre()
>>> c
Array ([[1, 4],
[2, 5],
[3, 6]])
>>> c.forma
(3, 2)

Una trasposizione di matrice su un array 1-D non ha alcun effetto poiché la trasposizione è la stessa dell'array originale.

>>> a = np.quelli (3)
>>> a
array ([1., 1., 1.])
>>> a.forma
(3,)
>>> a_traspose = a.transpone () # trasponi di array 1-d
>>> a_traspose
array ([1., 1., 1.])
>>> a_traspose.forma
(3,)

Per convertire un array da 1-D nella sua trasposizione come vettore a 2 giorni, è necessario aggiungere un asse aggiuntivo. Continuando dall'esempio precedente, il NP.newAxis può creare un nuovo vettore di colonna 2-D da un vettore a 1 D.

>>> a
array ([1., 1., 1.])
>>> A [NP.newaxis ,:]
array ([[1., 1., 1.]])
>>> A [NP.newaxis ,:].forma
(1, 3)
>>> a [:, np.newaxis]
array ([[1.",
[1.",
[1.]])
>>> a [:, np.newaxis].forma
(3, 1)

L'operazione di trasposizione su un array prende anche un argomento assi. Se gli assi dell'argomento non sono nessuno, l'operazione di trasposizione inverte l'ordine degli assi.

>>> a = np.Arange (2 * 3 * 4).Reshape (2, 3, 4)
>>> a
Array ([[[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.trasporre()
>>> a_t
Array ([[[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.forma
(2, 3, 4)
>>> a_t.forma
(4, 3, 2)

Nell'esempio sopra, la dimensione della matrice A era (2, 3, 4) e dopo la trasposizione, è diventata (4, 3, 2). La regola di trasposizione predefinita inverte l'asse della matrice di ingresso I.e at [i, j, k] = a [k, j, i].

Questa permutazione predefinita può essere modificata passando una tupla di numeri interi come argomento di input per traspare. Nell'esempio seguente, la j nel luogo di tupla significa che l'asse di A diventerà un.L'asse jth di Transpone (). Continuando dall'esempio precedente, passiamo gli argomenti (1, 2, 0) a.trasporre(). La regola di trasposizione così seguita qui è a [i, j, k] = a [j, k, i].

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