Загрузка переменных в IPython в рабочую область: можете ли вы придумать лучшее решение, чем это?

Я перехожу с MATLAB на ipython и, прежде чем совершить скачок, я прохожу свой минимальный рабочий процесс, чтобы убедиться, что все операции, которые я выполняю ежедневно на MATLAB для обработки данных, доступны на ipython.

В настоящее время я застрял на очень простой задаче сохранения и загрузки массивов-пустышек с помощью однострочной команды, такой как MATLAB:

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

В частности, что мне нравится в команде загрузки MATLAB, так это то, что она не только читает файл данных, но и загружает переменные в рабочую область, больше ничего не нужно для начала работы с ними. Обратите внимание, что это не так, например, с numpy.load (), для которой требуется другая строка, чтобы иметь возможность присваивать загруженные значения переменным рабочей области. [ Увидеть:IPython: как автоматически загрузить файл npz и присвоить значения переменным? ]

Основываясь на ответах и ​​комментариях к этому вопросу, я придумал это грязное-плохое-инженерное-уродливое-кодирующее-но работающее решение. Я знаю, что это не красиво, и я хотел бы знать, можете ли вы придумать правильную версию этого [1].

Я положил это в iocustom.py:

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

чтобы я мог запустить из сеанса ipython:

import iocustom
load('myresults.npz')

и переменные сбрасываются в рабочую область.

Мне трудно поверить, что нет ничего встроенного, эквивалентного этому, и еще сложнее думать, что эта трехстрочная функция является оптимальным решением. Я был бы очень признателен, если бы вы могли предложить более правильный способ сделать это.

Пожалуйста, имейте в виду, что:

Я ищу решение, которое также будет работать внутри скрипта и функции.Я знаю, что есть «pickle», но я отказываюсь использовать более одной строки кода для чего-то столь же обыденного, как простая команда «сохранить» и / или «загрузить».Я знаю, что от scipy есть «savemat» и «loadmat», но я бы хотел полностью перенастроить, то есть работать не с файлами матов, а с массивами numpy.

Заранее спасибо за вашу помощь.

[1] Кстати: как люди, работающие с ipython, легко сохраняют и загружают множество массивов? После долгих часов поисков я не могу найти простое и понятное решение для этой ежедневной задачи.

Ответы на вопрос(0)

Ваш ответ на вопрос