我是一名新手Python程序员,我正在将我的数据分析语言从MATLAB迁移到IPython。在MATLAB中,进行完数据处理后,我会执行以下操作:
>>> save('myresults.mat','x','y','z');
将变量x、y和z的结果保存在名为'myresults.mat'的文件中。后来,我可以简单地说:
>>> load('myresults');
使用MATLAB可以加载.mat文件并将变量的存储值分配给当前工作区。
最近我了解到,我也可以使用numpy在IPython中进行类似的操作,即:
import numpy as np
a = 2
b = np.sqrt(2)
np.savez('myresultsinpython',a,b)
之后可以做像这样的事情
npzfile = np.load('myresultsinpython')
然而,我得到的是一个对象,可以通过以下方式访问我的变量:
npzfile['arr_1']
等等,但是我会丢失所有变量的原始名称信息。我知道我可以通过执行来保存文件
np.savez('myresultsinpython',a=a,b=b)
但这并不是很有用,因为我仍然需要做类似这样的事情:
npzfile['a']
访问变量的值。
我如何既加载文件,又在我的工作区中创建变量,并根据文件中存储的值分配它们的值?
类似于np.load('myresults')
,然后能够执行a+b
,并返回3.4142135623730949 (=2+sqrt(2))
之类的结果。