我想知道,如何正确地保存和加载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
我做错什么了?我没有其他的后台操作。只是储存和装载,这就是我得到的。提前谢谢你。
^{} 有一个
sep=
关键字参数:默认值
sep=""
表示np.fromfile()
尝试将其读取为二进制文件,而不是空格分隔的文本文件,因此会返回无意义的值。如果你使用np.fromfile('markers.txt', sep=" ")
,你会得到你想要的结果。然而,正如其他人指出的,^{} 是将文本文件转换为numpy数组的首选方法,除非该文件需要人类可读,否则通常最好使用二进制格式(例如
np.load()
/np.save()
)。我发现最可靠的方法是将
np.savetxt
与np.loadtxt
一起使用,而不是np.fromfile
,这更适合用tofile
编写的二进制文件。np.fromfile
和np.tofile
方法写入和读取二进制文件,而np.savetxt
方法写入文本文件。 例如:或:
我使用前一种方法,即使它比较慢并且创建了更大的文件(有时):二进制格式可以依赖于平台(例如,文件格式取决于系统的端号)。
NumPy数组有一种与平台无关的格式,可以用
np.save
和np.load
保存和读取:相关问题 更多 >
编程相关推荐