Arrays de SciPy Matlab
NumPy proporciona métodos para guardar datos en un formato legible por Python.
SciPy proporciona métodos para interactuar con Matlab.
El módulo scipy.io de SciPy proporciona muchas funciones para trabajar con arrays de Matlab.
Exportar datos en formato Matlab
savemat()El método puede exportar datos en formato Matlab.
Los parámetros de este método son:- filename- El nombre del archivo donde se guardan los datos.
- mdict- Un diccionario que contiene los datos.
- do_compression- Un valor booleano que especifica si los datos resultantes están comprimidos. Por defecto es False.
Exporte el array como variable "vec" a un archivo mat:
Ejemplo
import numpy as np
arr = np.arange(10)
io.savemat('arr.mat', {"vec": arr})
Nota:El código anterior guardará un archivo llamado "arr.mat" en su computadora.
Importar datos en formato Matlab
El método loadmat() puede importar datos en formato Matlab.
Los parámetros de este método son:
- filename- El nombre del archivo donde se guardan los datos.
Devuelve un array estructurado cuyas claves son los nombres de variables y los valores correspondientes son los valores de las variables.
El siguiente ejemplo importa un array desde un archivo mat:
Ejemplo
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])
# Exportar
io.savemat('arr.mat', {"vec": arr})
# Importar
mydata = io.loadmat('arr.mat')
print(mydata)
El resultado devuelto es el siguiente:
{
'__header__': b'MATLAB 5.0 MAT-file Platform: nt, Created on: Tue Sep 22 13:12:32 2020',
'__version__': '1.0',
'__globals__': [],
'vec': array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
}Usando el nombre de variable "vec" para mostrar solo el array de datos de Matlab:Ejemplo
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])
# Exportar
io.savemat('arr.mat', {"vec": arr})
# Importar
mydata = io.loadmat('arr.mat')
print(mydata['vec'])
El resultado devuelto es el siguiente:
[[0 1 2 3 4 5 6 7 8 9]]
En el resultado se puede ver que el array era originalmente unidimensional, pero al extraerlo se añadió una dimensión y se convirtió en un array bidimensional.
Para resolver este problema se puede pasar un parámetro adicional.squeeze_me=True:
Ejemplo
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])
# Exportar
io.savemat('arr.mat', {"vec": arr})
# Importar
mydata = io.loadmat('arr.mat', squeeze_me=True)
print(mydata['vec'])
El resultado devuelto es el siguiente:
[0 1 2 3 4 5 6 7 8 9]Otras extensiones