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

from scipy import io
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

from scipy import io
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

from scipy import io
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

from scipy import io
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