IPython carregando variáveis no espaço de trabalho: você consegue pensar em uma solução melhor que essa?

Estou migrando do MATLAB para o ipython e, antes de dar o salto, passo pelo meu fluxo de trabalho mínimo para garantir que todas as operações que eu execute diariamente no MATLAB para processamento de dados estejam disponíveis no ipython.

Atualmente, estou preso à tarefa básica de salvar e carregar matrizes numpy por meio de um comando de uma linha, como o MATLAB:

>>> save('myresults.mat','a','b','c')
>>> load('myresults.mat')

Em particular, o que eu gosto no comando load do MATLAB é que não apenas ele lê o arquivo de dados, mas também carrega as variáveis no espaço de trabalho, nada mais é necessário para começar a trabalhar com eles. Observe que esse não é o caso de, por exemplo, numpy.load (), que requer outra linha para poder atribuir os valores carregados às variáveis da área de trabalho. [ Vejo:IPython: como carregar automaticamente o arquivo npz e atribuir valores a variáveis? ]

Com base nas respostas e comentários para essa pergunta, eu vim com essa solução suja, ruim, de engenharia, feia, de codificação, mas funcionando. Eu sei que não é bonito, e gostaria de saber se você pode vir com a versão correta disso [1].

Coloquei isso no iocustom.py:

def load(filename):
    ip = get_ipython()
    ip.ex("import numpy as np")
    ip.ex("locals().update(np.load('" + filename + "'))") 

para que eu possa executar, a partir da sessão ipython:

import iocustom
load('myresults.npz')

e as variáveis são despejadas na área de trabalho.

Acho difícil acreditar que não há nada embutido equivalente a isso, e é ainda mais difícil pensar que essa função de 3 linhas é a solução ideal. Ficaria muito grato se você pudesse sugerir uma maneira mais correta de fazer isso.

Lembre-se de que:

Estou procurando uma solução que também funcione dentro de um script e uma função.Eu sei que há "pickle", mas me recuso a usar mais de uma linha de código para algo tão banal quanto um simples comando "salvar" e / ou "carregar".Sei que há "savemat" e "loadmat" disponíveis no scipy, mas gostaria de migrar completamente, ou seja, não funciona com arquivos mat, mas com matrizes numpy.

Agradecemos antecipadamente por toda sua ajuda.

[1] BTW: como as pessoas que trabalham com o ipython salvam e carregam um conjunto de matrizes numpy facilmente? Depois de horas pesquisando no Google, não consigo encontrar uma solução simples e direta para essa tarefa diária.

questionAnswers(2)

yourAnswerToTheQuestion