Numpy / IPython эквивалентно назначению Matlab - PullRequest
2 голосов
/ 15 июля 2011

Я в процессе переноса некоторых наших внутренних инструментов визуализации / анализа данных с Matlab на IPython / Numpy / Scipy / PyLab. Инструменты, на которые я ссылаюсь, - это Matlab GUI, которые выполняют только простые виды анализа. Иногда я хочу сделать более сложный анализ, и в этом случае я нажимаю кнопку в графическом интерфейсе, которая выполняет Matlab "assignin ('base', ...". Это помещает данные в сеанс верхнего уровня, где я могу выполнять дальнейшие операции на нем.

Это не единственный вариант использования команды "assignin". В качестве другого примера я также использовал его для экспорта данных для анализа в основной сеанс Matlab из функции, находящейся глубоко в каком-то скрипте. (Это скорее временный / отладочный трюк, а не рутинная практика.)

Итак, я спрашиваю: есть ли эквивалент присваивания Matlab при работе в интерактивной среде IPython / PyLab? Если прямого эквивалента нет, как я могу получить данные из скрипта, запущенного из IPython, в основной сеанс?

1 Ответ

2 голосов
/ 16 июля 2011

Взгляните на глобальное пространство имен. На практике я использовал бы что-то вроде следующего кода, в зависимости от того, имеет ли ваша переменная статическое имя или имя может динамически меняться.

def staticAssignInBase():
    global x
    x = 'someValue'

def dynamicAssignInBase():
    g = globals()
    g['someVarName'] = 'someValue'

Но учтите, что это может не сработать за пределами пакета!

...