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对于恶意构建的数据并不安全。
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获得这些数组。
这两个函数也可以写文件,但会丢失有关字节顺序和精度的信息,因此十分不建议你用这两个函数。
QQ交流群: 211426309