-
.npz
文件是NumPy的压缩存档格式,可以包含多个数组(一个.npz文件包含几个数组)
一、导入包
import numpy as np
二、数据加载
poem = np.load('tang.npz',allow_pickle=True)
-
使用NumPy的
load()
函数加载.npz文件:-
file_path
:指定要加载的文件路径 -
allow_pickle=True
:允许加载包含Python对象(pickle)的数据 -
返回一个
NpzFile
对象(这里赋值给变量poem
)
-
三、访问NpzFile
对象的files
属性
print(poem.files)
本文用例的属性为:(说明该对象有三个数组)
四、输出三个数组
ix2word,word2ix,data=poem['ix2word'],poem['word2ix'],poem['data']
print(ix2word)
print(word2ix)
print(data)
ix2word和word2ix分别为汉字的索引,作用于data数组里面的索引
五、将 NumPy 数组中的标量值(0维数组)转换为 Python 的原生数据类型
ix2word = ix2word.item()
当你用 np.load('file.npz', allow_pickle=True)
加载数据时:
-
如果原始数据是 Python 对象(如字典、列表),NumPy 会将其封装为 0维数组。
-
直接尝试索引会报错:IndexError: too many indices for array: array is 0-dimensional, but 1 were indexed
-
建议用type(ix2word)来检查数据类型
六、提取data数组第一行元素
for i in range(data.shape[1]): #data为二维数组
print(ix2word[data[1][i]],end=" ")
输出结果为:
</s> </s> <START> 逍 遥 东 城 隅 , 双 树 寒 葱 蒨 。 广 庭 流 华 月 , 高 阁 凝 余 霰 。 杜 门 非 养 素 , 抱 疾 阻 良 䜩 。 孰 谓 无 他 人 , 思 君 岁 云 变 。 官 曹 亮 先 忝 , 陈 躅 慙 俊 彥 。 岂 知 晨 与 夜 , 相 代 不 相 见 。 缄 书 问 所 如 , 詶 藻 当 芬 绚 。 <EOP>