Funzione ndarray di numpy in python
La funzione ndarray del modulo numpy di Python mi permette di modificare il numero delle dimensioni di un array.
Ad esempio, importo il modulo numpy
>>> import numpy as np
Poi creo un array a matrice 2x3 con due righe e tre colonne
>>> M=np.array([[1, 2, 3],[4, 5, 6]])
Per trasformare l'array in una matrice 3x2 a parità di elementi utilizzo la funzione ndarray.reshape()
>>> np.ndarray.reshape(M,(3,2))
Il risultato in output è
array([[1, 2],
[3, 4],
[5, 6]])
Per trasformare la matrice iniziale in una matrice a una dimensione, ossia in un vettore digito
>>> np.ndarray.reshape(M,(1,6))
Il risultato in output è
array([[1, 2, 3, 4, 5, 6]])
Per ottenere lo stesso risultato posso usare il metodo ravel della funzione ndarray
np.ndarray.ravel(M)
Il risultato è sempre lo stesso
array([1, 2, 3, 4, 5, 6])
In tutti i casi la funzione ndarray.reshape() e ndarray.ravel() creano una vista degli elementi.
Quindi i dati sono riferimenti agli stessi indirizzi di memoria.
Per ottenere lo stesso risultato posso anche usare il metodo flatten della funzione ndarray
np.ndarray.flatten(M)
Il risultato è sempre lo stesso
array([[1, 2, 3, 4, 5, 6]])
In questo caso i dati sono memorizzati in indirizzi di memoria differenti dall'array di origine.
Il metodo transpose produce una trasposizione dell'array
>>> np.ndarray.transpose(M)
Il risultato è il seguente
array([[1, 4],
[2, 5],
[3, 6]])
E così via.