Variables de carga de IPython en el espacio de trabajo: ¿se te ocurre una solución mejor que esta?
Estoy migrando de MATLAB a ipython y antes de dar el salto reviso mi flujo de trabajo mínimo para asegurarme de que todas las operaciones que realizo a diario en MATLAB para el procesamiento de datos estén disponibles en ipython.
Actualmente estoy atascado en la tarea muy básica de guardar y cargar matrices numpy a través de un comando de una línea, como MATLAB:
>>> save('myresults.mat','a','b','c')
>>> load('myresults.mat')
En particular, lo que me gusta del comando de carga de MATLAB es que no solo lee el archivo de datos sino que carga las variables en el espacio de trabajo, no se necesita nada más para comenzar a trabajar con ellas. Tenga en cuenta que este no es el caso con, por ejemplo, numpy.load (), que requiere otra línea para poder asignar los valores cargados a las variables del espacio de trabajo. [ Ver:IPython: ¿cómo cargar automáticamente el archivo npz y asignar valores a las variables? ]
Basado en las respuestas y comentarios a esa pregunta, se me ocurrió esta solución sucia-mala-ingeniería-fea-codificación-pero-que funciona. Sé que no es bonito, y me gustaría saber si puedes encontrar la versión correcta de esto [1].
Puse esto en iocustom.py:
def load(filename):
ip = get_ipython()
ip.ex("import numpy as np")
ip.ex("locals().update(np.load('" + filename + "'))")
para poder ejecutar, desde la sesión de ipython:
import iocustom
load('myresults.npz')
y las variables se vuelcan al espacio de trabajo.
Me resulta difícil creer que no haya nada incorporado equivalente a esto, y es aún más difícil pensar que esa función de 3 líneas es la solución óptima. Le estaría muy agradecido si pudiera sugerir una forma más correcta de hacerlo.
Por favor tenga en cuenta que:
Estoy buscando una solución que también funcione dentro de un script y una función.Sé que hay "pickle", pero me niego a usar más de una línea de código para algo tan mundano como un simple comando 'guardar' y / o 'cargar'.Sé que hay "savemat" y "loadmat" disponibles desde scipy, pero me gustaría migrar por completo, es decir, no funciona con archivos mat sino con matrices numpy.Gracias de antemano por su ayuda.
[1] Por cierto: ¿cómo las personas que trabajan con ipython guardan y cargan fácilmente un conjunto de matrices numpy? Después de horas de buscar en Google, parece que no puedo encontrar una solución simple y directa para esta tarea diaria.