第15节,numpy 读写二进制文件

1. 写二进制文件

numpy数组写如二进制文件的函数有三个,分别是save, savez, savez_compressed。 savez可以将多个ndarray写入到一个文件里,savez_compressed可以将多个ndarray压缩后写入到文件中

import numpy as np

# 写入文件
array = np.random.randint(9, size=(3, 3), dtype=np.int32)
np.save('d1', array)        # 将一个ndarray写入一个文件

array2 = np.random.randint(9, size=(3, 3), dtype=np.int32)
np.savez('d2', array, array2)   # 将多个ndarray写入一个文件

np.savez_compressed('d3', array, array2)        # 将多个ndarray 压缩后写入到一个文件

使用save函数保存的文件会自动加后缀名npy,使用savez和savez_compressed函数保存的文件会自动加后缀npz。

在写二进制文件时,allow_pickle最好设置为False,因为pickle对于恶意构建的数据并不安全。

2. 读取二进制文件

numpy读取二进制文件,只需要一个load函数

import numpy as np

array = np.load('d1.npy')
print(array)


data = np.load('d2.npz')
for key in data.files:
    print(data[key])

data2 = np.load('d3.npz')
for key in data.keys():
    print(data[key])

如果文件里存储了多个数组,可以通过遍历files属性或者keys()方法返回的可迭代对象遍历data获得这些数组。

3. tofile 和 fromfile

这两个函数也可以写文件,但会丢失有关字节顺序和精度的信息,因此十分不建议你用这两个函数。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案