Python读取 npy, npz, h5, pkl 文件

您所在的位置:网站首页 pkl文件是什么 Python读取 npy, npz, h5, pkl 文件

Python读取 npy, npz, h5, pkl 文件

#Python读取 npy, npz, h5, pkl 文件| 来源: 网络整理| 查看: 265

文章目录 1. npy文件2. npz文件3. h5文件4. pkl文件 我们在进行数据处理及分析时,常常会用到CSV文件。当CSV文件中数据量较大时,处理数据的速度非常慢,且所占存储空间大。这时,我们可以考虑将原始CSV数据存储为 npz, h5 及 pkl 的形式,从而大大提升读取速度 。

1. npy文件

numpy能够读写磁盘上的文本数据或二进制数据。 np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

(1) 存储为npy文件

np.save函数可将 单个数组 以二进制格式保存到文件中.

import numpy as np data = np.arange(5) np.save('test.npy', data)

(2) 读取npy文件

data = np.load('test.npy') 2. npz文件

如果想将多个数组保存到一个文件中的话,可以使用 np.savez 函数。

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

savez函数输出的是一个压缩文件(扩展名为npz),其中每个文件都是一个save函数保存的npy文件,文件名对应于数组名。

(1) 存储为npz文件

import numpy as np a = np.arange(5) b = np.arange(6) c = np.arange(7) np.savez('test.npz', a, b=b, c_array=c)

(2) 读取npz文件 np.load函数自动识别npz文件,并且返回一个类似于字典的对象,可以通过数组名作为关键字获取数组的内容.

data = np.load('./test.npz') # 使用np.load加载

查看npz文件中包含哪些数据字典

print(data.files) # ['b', 'c_array', 'arr_0'] 分别对应于数组 b, c, a

查看npz文件中的数据字典的shape

print(data['arr_0'].shape) # (5,) print(data['b'].shape) # (6,) print(data['c_array'].shape) #(7,) 3. h5文件

HDF5文件适合于大量异构数据的内部文件状结构的压缩格式。对于某些数据结构,其大小和访问速度都非常惊人。

(1) 存储为npz文件

# 将数据帧导出到hdf df.to_hdf(path_or_buf, key, mode, complevel, complib, append ...)

to_hdf () 中比较有用的几个参数:

path_or_buf – 文件路径或HDFStore对象;key(键)-- 已识别或存储区中的组;后面可以根据key来索引mode(模式)-- 写入,追加或读取追加;format(格式) – fixed 用于快速读写,而 table 仅允许选择数据的子集。

将CSV文件转化为h5文件

import pandas as pd data = pd.read_csv('./test.csv', header=None) data.to_hdf('test.h5', key='df')

(2) 读取h5文件

data = pd.read_hdf('./test.h5') print(data.shape) 4. pkl文件

可以对以下数据类型来pickle对象:布尔值,整数,字符串,元组,列表,集合,和获取可选对象的字典。

pickle 的优点:

比 CSV 更快(取决于压缩方法,写入CSV的5–300%和读取CSV的15–200%)生成的文件更小(约为CSV的50%)保留有关数据类型的信息(100%)无需指定过多的参数

(1) 存储为pkl文件

import pickle objects = {'a':[4,2,1.5,1], 'b':[32,[101],17], 'x':True, 'y':False} # 写法1 with open('test.pkl', 'wb') as f: pickle.dump(objects, f) # 写法2 pickle.dump(objects, open('test.pkl', 'wb'))

(2) 读取pkl文件

# 写法1 with open('test.pkl', 'rb') as f: data = pickle.load(f) # data = pickle.load(f, encoding='latin1') # 防止出现编码不一致报错问题 # 写法2 data = pickle.load(open('test.pkl','rb')) print(data) # {'a': [4, 2, 1.5, 1], 'b': [32, [101], 17], 'x': True, 'y': False}

(3) 使用Pandas操作DataFrame的pickle序列化

import pandas as pd data = pd.DataFrame([range(11), range(100,110)], columns=list('abcdefghijk')) data.to_pickle('test.pkl') pkl_data = pd.read_pickle('test.pkl')


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3