提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
tofile() 和 fromfile()存取二进制格式文件
import numpy as np
a=np.arange(6).reshape(2,3)
a.tofile('2.22.bin')
首先来看看在编译器中,会生成文件名为2.22.bin的文件:
由于是二进制,会导致编译器中查看文件出现乱码。然后我们继续写代码使用fromfile来读回数据:
import numpy as np
a=np.arange(6).reshape(2,3)
a.tofile('2.22.bin')
b= np.fromfile('2.22.bin',dtype=int).reshape(2,3)
print(b)
#打印b:[[0 1 2]
# [3 4 5]]
注意,在使用fromfile()函数的时候要指定元素类型并对数组的形状进行适当修改。
load(),save()和savez()存取Numpy专用的二进制格式文件
load():用于从 .npy 文件中加载数据。
save() :用于将数据保存到 .npy 文件中。
savez() :用于将多个数组保存到一个 .npz 文件中。
load()用法:
numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')
file:要加载的文件名或类文件对象。
mmap_mode:指定内存映射模式,默认为 None。
allow_pickle:指定是否允许加载 .npy 文件中的 pickle 对象,默认为 True。
fix_imports:在 Python 3 中是否修正 pickle 数据,默认为 True。
encoding:如果 allow_pickle=False,指定编码格式,默认为 ‘ASCII’。
save()用法:
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
file:要保存的文件名或类文件对象。
arr:要保存的数组。
allow_pickle:指定是否允许保存 pickle 对象,默认为 True。
fix_imports:在 Python 3 中是否修正 pickle 数据,默认为 True。
savez()用法:
numpy.savez(file, *args, **kwds)
file:要保存的文件名或类文件对象。
*args:要保存的数组,可以是多个数组。
**kwds:关键字参数,用于指定要保存的数组的名称。
load和save的使用
import numpy as np
a = np.arange(6).reshape(2,3)
np.save("2_23.npy",a)
b = np.load("2_23.npy")
print(b) #输出为[[0 1 2]
# [3 4 5]]
多个数组的存取
import numpy as np
c = np.arange(6,12).reshape(2,3)
d = np.sin(c)
np.savez("2.npz",c,d)
e = np.load("2.npz")
print(e)
在这里,我们有c和d两个数组并将他们存储到文件名为2.npz的文件中。可能有人会疑问,为什么save用的是npy而savez用的是npz的后缀? 原因是.npy 文件是 NumPy 专用的二进制文件格式,用于保存单个 NumPy 数组。
,而.npz 文件也是 NumPy 专用的二进制文件格式,但它用于保存多个 NumPy 数组,类似于一个压缩存档。
所以存储单个或多个数组的时候,要注意后缀。
打印e:
NpzFile '2.npz' with keys: arr_0, arr_1
arr_0存储的是第一个数组的数据,也就是c的数据,arr_1存储的是第二个数组的数据,也就是d的数据。
f1 = e["arr_0"] #提取第一个数组的数据
f2 = e["arr_1"] #提取第二个数组的数据
print(f1)
print(f2)
打印f1和f2:
[[ 6 7 8]
[ 9 10 11]]
[[-0.2794155 0.6569866 0.98935825]
[ 0.41211849 -0.54402111 -0.99999021]]