npy/npz和pkl文件的类型和打开方式

1.npy文件

属于python生成的数据文件,一般用于保存训练好的模型文件。

是numpy专用的二进制格式,可使用numpy读取。

np.load()和np.save()是读写磁盘数组数据的两个重要函数。使用时,数组会以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

import numpy as np
test = np.load(路径/.npy)
print(test)

保存为.npy文件后如果使用记事本等工具打开浏览会出现乱码。

模型文件(.npy)解剖

import numpy as np
from numpy import *  #使用numpy的属性且不需要在前面加上numpy
import tensorflow as tf
 
#模型文件(.npy)部分内容如下:由一个字典组成,字典中的每一个键对应一层网络模型参数。(包括权重w和偏置b)
a = {'conv1':[array([[1,2],[3,4]],dtype=float32),array([5,6],dtype=float32)],'conv2':[array([[1,2],[3,4]],dtype=float32),array([5,6],dtype=float32)]}
 
conv1_w = a['conv1'][0]
conv1_b = a['conv1'][1]
conv2_w = a['conv2'][0]
conv2_b = a['conv2'][1]
 
print(conv1_w)
print(tf.Variable(conv1_w))
print(conv1_b)
print(tf.Variable(conv1_b))

结果:

[[ 1. 2.]
[ 3. 4.]]

[ 5. 6.]

2.npz文件

是numpy下的压缩文件。

使用np.savez()函数可以将多个数组保存到同一个文件中。

np.savez()函数的第一个参数是文件名,其后的参数都是需要保存的数组。传递数组时可以使用关键字参数为数组命名,非关键字参数传递的数组会自动起名为arr_0、arr_1……

np.savez()函数输出的是一个扩展名为.npz的压缩文件,它包含多个与保存的数组对应的npy文件(由save()函数保存),文件名对应数组名。

读取.npz文件时使用np.load()函数,返回的是一个类似于字典的对象,因此可以通过数组名作为关键字对多个数组进行访问。

import numpy as np

# 将多个数组保存到磁盘
a = np.arange(5)
b = np.arange(6)
c = np.arange(7)
np.savez('test', a, b, c_array=c)  # c_array是数组c的命名
# 读取数组
data = np.load('test.npz')  #类似于字典{‘arr_0’:a,’arr_1’:b,’c_array’:c}
print('arr_0 : ', data['arr_0'])
print('arr_1 : ', data['arr_1'])
print('c_array : ', data['c_array'])

--------------------------------------------------------------------------------
arr_0 :  [0 1 2 3 4]
arr_1 :  [0 1 2 3 4 5]
c_array :  [0 1 2 3 4 5 6]

3.pkl文件

也是python用于保存文件用的,是保存文件的一种格式。

如我一个生成人脸的生成器文件,就是以.pkl格式下载运行的。

使用python3的pickle包打开

import pickle

# 注意使用rb打开二进制文件
f = open('xxxxxx.pkl','rb')
data = pickle.load(f)
print(data)

你可能感兴趣的:(python)