IPython:如何自动加载npz文件并为变量赋值?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了IPython:如何自动加载npz文件并为变量赋值?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2021字,纯文字阅读大概需要3分钟。
内容图文
![IPython:如何自动加载npz文件并为变量赋值?](/upload/InfoBanner/zyjiaocheng/693/caf4afe68a054e639b5e8cc06aed15b6.jpg)
我是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’)并能够执行b并获得3.4142135623730949(= 2 sqrt(2))作为回报.
解决方法:
locals().update(npzfile)
a # and/or b
在Ipython会话中,locals()是一个大型词典,其中包含您定义的变量,输入历史记录行和各种输出.更新会将npzfile的字典值添加到较大的字典值.
顺便说一句,您还可以加载和保存MATLAB .mat文件.使用scipy.io.loadmat和savemat.它处理v4(1.0级),v6和v7到7.2文件.但是您有同样的问题-结果是字典.
八度具有加载命令的表达式形式,可将数据加载到结构中
S =加载(“文件”,“选项”,“ v1”,“ v2”,…)
通常,numpy和ipython与MATLAB并不具有相同的“保存工作区快照”的想法.我主要编写脚本来生成(和加载)必要的数据,然后将它们作为独立的python会话运行,或者从ipython中运行它们. ipython确实具有良好的历史记录功能.您可能还会发现ipython笔记本工具有用.我没有用过.
在函数内部,locals()与函数外部不同.它对于每个功能都是“本地的”.有一个globals()字典可能允许在函数外部设置变量.但是不鼓励使用这种编程风格.
Anurag引用的SO问题指向save_ipython_variables包. https://pypi.python.org/pypi/save_ipython_variables/0.0.3它用泡菜保存变量,并通过类似的方式加载它们
exec '__builtins__[name] = pickle.load(...)
通过使用exec和__builtins__,它推动了一些安全的编程边界.因此,请谨慎使用.但是在我的环境中可以进行一次小型测试.相同的技术可能适用于npz文件.
内容总结
以上是互联网集市为您收集整理的IPython:如何自动加载npz文件并为变量赋值?全部内容,希望文章能够帮你解决IPython:如何自动加载npz文件并为变量赋值?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。