Numpy之文件存取

  • 上一篇中我们简要带过了Numpy的数据持久化,在这一篇中将要具体说明Numpy提供的文件存取功能。Numpy可以将数组保存至二进制文件、文本文件,同时支持将多个数组保存至一个文件中。

    1. np.tofile() & np.fromfile()

    01. import numpy as np
    02. import os
    03.  
    04. os.chdir("d:\\")
    05. a = np.arange(0,12)
    06. a.reshape(3,4)
    07. array([[ 0,  1,  2,  3],
    08. 4,  5,  6,  7],
    09. 8,  91011]])
    10.  
    11. a.tofile("a.bin")                                    #保存至a.bin
    12.  
    13. b = np.fromfile("a.bin", dtype=np.int32)  #从文件中加载数组,错误的dtype会导致错误的结果
    14. array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  91011])
    15.  
    16. b.reshape(3,4)
    17. array([[ 0,  1,  2,  3],
    18. 4,  5,  6,  7],
    19. 8,  91011]])
    20. #读取的数据将为一维数组,需要使用reshape改变其数组结构

    2. np.save() & np.load() & np.savez()

    load()和save()用Numpy专用的二进制格式保存数据,它们会自动处理元素类型和形状等信息。savez()提供了将多个数组存储至一个文件的能力,调用load()方法返回的对象,可以使用数组名对各个数组进行读取。默认数组名arr_0,arr_1,arr_2......

    1. np.save("a.npy", a.reshape(3,4))
    2. c = np.load("a.npy")
    3. c
    4. array([[ 0,  1,  2,  3],
    5. 4,  5,  6,  7],
    6. 8,  91011]])


    多个数组存储至一个文件:

    01. a = np.array([[1,2,3],[4,5,6]])
    02. b = np.arange(0,1.0,0.1)
    03. c = np.sin(b)
    04. np.savez("result.npz", a, b, sin_arr=c)  #使用sin_arr命名数组c
    05. r = np.load("result.npz") #加载一次即可
    06. r["arr_0"]
    07. array([[123],
    08. [456]])
    09. r["arr_1"]
    10. array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])
    11. r["sin_arr"]
    12. array([ 0.        ,  0.09983342,  0.19866933,  0.29552021,  0.38941834,
    13. 0.47942554,  0.56464247,  0.64421769,  0.71735609,  0.78332691])

     可以使用解压软件解压缩.npz文件会得到存储的各个数组对应的.npy文件以便进行遍历。

    3. savetxt() & loadtxt()

    01. a = np.arange(0,12,0.5).reshape(4,-1)
    02. a
    03. array([[  0. ,   0.5,   1. ,   1.5,   2. ,   2.5],
    04. [  3. ,   3.5,   4. ,   4.5,   5. ,   5.5],
    05. [  6. ,   6.5,   7. ,   7.5,   8. ,   8.5],
    06. [  9. ,   9.5,  10. ,  10.5,  11. ,  11.5]])
    07. np.savetxt("a.txt", a)
    08. np.loadtxt("a.txt")
    09. array([[  0. ,   0.5,   1. ,   1.5,   2. ,   2.5],
    10. [  3. ,   3.5,   4. ,   4.5,   5. ,   5.5],
    11. [  6. ,   6.5,   7. ,   7.5,   8. ,   8.5],
    12. [  9. ,   9.5,  10. ,  10.5,  11. ,  11.5]])
    13. np.savetxt("a.txt", a, fmt="%d", delimiter=",") #指定存储数据类型为整型,分隔符为,
    14. np.loadtxt("a.txt", delimiter=',') #以,分隔符读取
    15. array([[  0.,   0.,   1.,   1.,   2.,   2.],
    16. [  3.,   3.,   4.,   4.,   5.,   5.],
    17. [  6.,   6.,   7.,   7.,   8.,   8.],
    18. [  9.,   9.,  10.,  10.,  11.,  11.]])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值