开发者社区 问答 正文

如何正确保存和加载numpy.array()数据?

我想知道如何numpy.array正确保存和加载数据。目前,我正在使用该numpy.savetxt()方法。例如,如果我有一个array 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没有执行其他“后台”操作。只需保存和加载,这就是我得到的。先感谢您。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 14:16:12 499 分享 版权
1 条回答
写回答
取消 提交回答
  • 我发现执行此操作的最可靠方法是与一起使用np.savetxt,np.loadtxt而不是np.fromfile更适合用编写的二进制文件tofile。该np.fromfile和np.tofile方法写入和读取二进制文件,而np.savetxt写入一个文本文件。因此,例如:

    In [1]: a = np.array([1, 2, 3, 4]) In [2]: np.savetxt('test1.txt', a, fmt='%d') In [3]: b = np.loadtxt('test1.txt', dtype=int) In [4]: a == b Out[4]: array([ True, True, True, True], dtype=bool) 要么:

    In [5]: a.tofile('test2.dat') In [6]: c = np.fromfile('test2.dat', dtype=int) In [7]: c == a Out[7]: array([ True, True, True, True], dtype=bool) 我使用前一种方法,即使它速度较慢并且有时会创建更大的文件:二进制格式也可能取决于平台(例如,文件格式取决于系统的字节序)。

    NumPy数组有与平台无关的格式,可以使用np.save和保存和读取np.load:

    In [8]: np.save('test3.npy', a) # .npy extension is added if not given In [9]: d = np.load('test3.npy') In [10]: a == d Out[10]: array([ True, True, True, True], dtype=bool)

    2020-02-08 14:16:24
    赞同 展开评论
问答标签:
问答地址: