Python中如何打开查看.npz文件

  • .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> 
 

Read more

【C++】 —— 笔试刷题day_29

【C++】 —— 笔试刷题day_29

一、排序子序列 题目解析 一个数组的连续子序列,如果这个子序列是非递增或者非递减的;这个连续的子序列就是排序子序列。 现在给定一个数组,然后然我们判断这个子序列可以划分成多少个排序子序列。 例如:1 2 3 2 2 1 可以划分成 1 2 3和2 2 1两个排序子序列 算法思路 对于这道题,思路就很简单了: 暴力解法 从0位置开始遍历,寻找一段连续子序列,直到这一段子序列不满足排序子序列的条件,即找到了一个排序子序列; 然后继续从上次遍历结束位置接着遍历数组,寻找下一个子序列。 贪心优化: 当我们遍历到数组中数值相同的区域时,我们要知道,要找的子序列是非递增或者非递减的; 所以这一段相等的序列,我们可以加到前面或者后面的任意序列中。 所以我们在遇到数值相等的子序列时,继续向后遍历即可。 但是这样我们会发现两个问题: 如果数组刚开始位置的数据是相等的,我们不知道这段子序列是非递增的还是非递减的;我们在遍历过程中会用到下一个位置的值来判断是非递增还是非递减,那最后一个位置该怎么办? 对于数组开头的相等子序列,我们可以直接跳过,因为这一段相等的序列可以加到

By Ne0inhk
C++ string 全面指南

C++ string 全面指南

一、模板 1. 函数模板 什么是模板呢?模板就是一个模具,只需要往这个模具里倒入不同的材料,就可以获得不同材料的铸件。 如果我们要实现一个交换函数呢?这是很容易的事情。 但是这种交换函数只能实现整型之间的交换,如果我想进行浮点数交换呢,字符型交换呢?是不是就不可以了。 虽然我们可以通过函数重载实现不同的交换函数,但是这样做太浪费时间了,没有意义。毕竟只是改变了交换函数参数的类型,代码不需要变化。所以,这种方法是有缺陷的。 1.代码复用率低。 2.可维护性差。 所以,有了函数模板,这是实现泛型编程的基础。 所谓泛型编程就是编写与类型无关的通用代码,是代码复用的一种手段。 template<typename T>就是定义了一个模板,通过一份代码就可以实现多个要求。 这里的typename也可以换成class,这两个的区别会在后面讲解。 这个就叫做函数模板,函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。 函数模板的格式:template<typename T1, typename

By Ne0inhk
C++ string 类详解:概念、常用操作与实践(算法竞赛类)

C++ string 类详解:概念、常用操作与实践(算法竞赛类)

🔥个人主页:星轨初途 ❄专栏传送门:C语言,数据结构,C++学习(竞赛类)算法及编程题分享 文章目录 * 前言 * 一、string概念 * 二、string的常见操作和功能 * 1、头文件 * 2、创建字符串 * 3、string字符串的输入 * (1)正常输入(cin) * (2)getline(带空格输入) * 第一种(默认以‘\n’为结束标志) * 第二种(自定义结束标志) * 4、size()——字符串长度 * 5、迭代器(iterator) * begin()和end() * (1)比较 * (2)遍历 * 改变指定字符 * 6、字符串的插入和删除 * (1)插入

By Ne0inhk
【一天一个计算机知识】—— 【 C/C++ 内存管理与分布】

【一天一个计算机知识】—— 【 C/C++ 内存管理与分布】

⚡ CYBER_PROFILE ⚡ /// SYSTEM READY /// [WARNING]: DETECTING HIGH ENERGY 🌊 🌉 🌊 心手合一 · 水到渠成 >>> ACCESS TERMINAL <<<[ 🦾 作者主页 ][ 🔥 C语言核心 ][ 💾 编程百度 ][ 📡 代码仓库 ] --------------------------------------- Running Process: 100% | Latency: 0ms 索引与导读 * 🚩一、C/C++ 内存分布 * 🚩二、C语言的动态内存管理 * 💪C动态内存管理的面试考点 * 1)realloc的工作机制 * 2)malloc/calloc/realloc的区别是什么? * 🚩三、C++ 动态内存管理 * 1)操作内置类型 * 1.1)单个变量的分配和释放

By Ne0inhk