第六章 用于ndarray的文件操作

NumPy入门教程

第一章 NumPy 介绍
第二章 ndarray的创建及其属性
第三章 ndarray的基本操作
第四章 ndarray的索引、切片和遍历
第五章 ndarray的重塑、组合和拆分
第六章 用于ndarray的文件操作
第七章 ndarray的赋值、视图、拷贝和广播



前言

上一章讲述了 ndarray 的重塑、组合和拆分。本章讲述用于 ndarray 的文件操作。我们可以使用 numpy 提供的方法将 ndarray 存储到文件,还可以从存储 ndarray 的文件中读取 ndarray。


一、单个数组的读写

np.save()np.load() 是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npy 的文件中的。例如:
将数组写到文件中:

>>> import numpy as np
>>>
>>> my_arr1 = np.arange(0, 16).reshape((4, 4))
>>> np.save('my_arr1', my_arr1)

如果文件路径末尾没有扩展名 .npy,则该扩展名会被自动加上。执行完上述代码后,在代码的同级目录下会生成文件 my_arr1.npy
从文件中读取数组:

>>> import numpy as np
>>>
>>> my_arr1 = np.load('my_arr1.npy')
>>> my_arr1
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

上述代码使用 load() 函数从文件中读取了存入的数组。

二、多个数组的读写

通过 np.savez() 可以将多个数组保存到一个未压缩文件中,将数组以关键字参数的形式传入即可,例如:

>>> import numpy as np
>>>
>>> my_arr1 = np.arange(16).reshape((4,4))
>>> my_arr2 = np.random.randn(16).reshape((4,4))
>>>
>>> np.savez('array_archive.npz', my_arr1 = my_arr1, my_arr2 = my_arr2)

上述代码将 my_arr1my_arr2 同时存入了 array_archive.npz 中。加载 .npz 文件时,会得到一个类似字典的对象,该对象会对各个数组进行延迟加载,也就是说只有在某个数组时才会进行加载,例如:

>>> import numpy as np
>>>
>>> arch = np.load('array_archive.npz')
>>>
>>> my_arr1 = arch['my_arr1']
>>> my_arr2 = arch['my_arr2']
>>>
>>> my_arr1
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
>>> my_arr2
array([[ 1.15858756, -1.21630677,  0.57370911,  1.65244395],
       [ 0.5460801 ,  1.27896644, -0.82600453, -1.09361087],
       [ 0.44293908, -1.25518827, -0.93608465, -0.18590644],
       [ 2.14727075,  1.57004458,  0.19313407, -0.78250789]])

如果要将数据压缩,可以使用 numpy.savez_compressed() 函数,例如:
写入:

>>> import numpy as np
>>>
>>> my_arr1 = np.arange(16).reshape((4,4))
>>> my_arr2 = np.random.randn(16).reshape((4,4))
>>>
>>> np.savez_compressed('arrays_compressed.npz', my_arr1 = my_arr1, my_arr2 = my_arr2)

读取:

>>> import numpy as np
>>>
>>> arch = np.load('arrays_compressed.npz')
>>>
>>> my_arr1 = arch['my_arr1']
>>> my_arr2 = arch['my_arr2']
>>>
>>> my_arr1
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
>>> my_arr2
array([[-0.07028458, -0.55337584,  0.65690408, -0.85634593],
       [ 0.48397395, -0.77264017,  0.2815258 ,  0.43286199],
       [-0.31660123,  1.32958994,  0.28324572, -1.01566116],
       [ 0.55948413, -0.42425324,  0.40465358,  0.48599962]])

总结

本章介绍了用于 ndarray 的文件操作,包括单个数组的读写、多个数组的读写以及压缩文件的读写。

上一章 ndarray的重塑、组合和拆分

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值