【发布时间】:2015-04-10 23:01:23
【问题描述】:
我想知道如何正确保存和加载numpy.array 数据。目前我正在使用numpy.savetxt() 方法。例如,如果我得到一个数组markers,它看起来像这样:
我尝试通过以下方式保存它:
numpy.savetxt('markers.txt', markers)
在其他脚本中,我尝试打开以前保存的文件:
markers = np.fromfile("markers.txt")
这就是我得到的......
保存的数据首先如下所示:
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
但是当我使用相同的方法保存刚刚加载的数据时,即。 numpy.savetxt() 看起来像这样:
1.398043286095131769e-76
1.398043286095288860e-76
1.396426376485745879e-76
1.398043286055061908e-76
1.398043286095288860e-76
1.182950697433698368e-76
1.398043275797188953e-76
1.398043286095288860e-76
1.210894289234927752e-99
1.398040649781712473e-76
我做错了什么? PS我没有执行其他“后台”操作。只是保存和加载,这就是我得到的。提前谢谢你。
【问题讨论】:
-
文本文件的输出是什么?为什么不直接写入 CSV 文件?
-
您需要保存和加载为人类可读的文本文件吗?如果您使用
np.save()和np.load()保存/加载二进制文件,它会更快(并且文件会更紧凑)。 -
感谢您的建议。它有帮助。但是,您能解释一下为什么会这样吗?是否有任何方法可以将数据保存为 *.txt 格式并轻松加载?例如,当您想使用 matlab、java 或其他工具/语言时。
-
要将数组传入/传出 MATLAB,您可以使用
scipy.io.savemat和scipy.io.loadmat。 -
fromfile的默认值是以二进制形式读取数据。loadtxt是与savetxt的正确配对。查看函数文档。