Numpy文件交互:.npy和.npz有什么区别?

news2024/11/15 23:36:44

文章目录

    • save
    • load
    • savez
    • savez_compressed

Numpy提供了以.npy为后缀的文件存储方案,与这种文件格式密切相关的读、写函数分别是np.loadnp.save。通过savez可以一次性存储多个数组,并可通过load以键值对的形式读取出来;如果觉得文件太大,可以通过savez_compressed进行压缩。

save

save函数的定义为

numpy.save(file, arr, allow_pickle=True, fix_imports=True)

其中file为文件路径,若不以.npy为结尾,则自动添加.npy后缀;arr为待存储数据。allow_pickleTrue时,允许通过Python自带的pickle来存储对象;fix_importTrue时,pickle将为旧的Python2数据尽量匹配成Python3的。

import numpy as np
x = np.arange(10000)
np.save("test", x)
# x被存储为`test.npy`

load

用于读取numpy文件的load函数定义如下

numpy.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII', *, max_header_size=10000)

其中file是文件名,encoding为编码方式,这没什么好说的;allow_pickle, fix_importssave中相同。max_header_size为头文件尺寸,表示读取时跳过的内容。

map_mode为内存映射模式,可选r+, r, w+, c

通过load,可以将刚刚存储的test.npy读取出来

y = np.load("test.npy")
(x==y).all()
# 返回True,说明x和y全等

savez

save只能存储一个数组对象,多了会忽略;savez则解决了这个问题

np.save("xy", x,y,y)
test = np.load('xy.npy')
print(test) #[   0    1    2 ... 9997 9998 9999]
print(len(test))    # 10000

np.savez("xy", x, y)
test = np.load('xy.npz')
print(test.files)
# ['arr_0', 'arr_1']
print(test['arr_0'])
# [   0    1    2 ... 9997 9998 9999]

savez将多个数组存入到了文件中。

savez在存储文件时,字典的键值是可以更改的

np.savez("xy", x=x, Y=y)
test = np.load('xy.npz')
print(test.files)
# ['x', 'Y']

savez的运行逻辑,是先将每一个数组存为npy之后,再将这些npy压缩为zip文件,最后在zip文件外面套一层npz的壳。所以通过savez存储的文件,在被load之后,得到的是一个NpzFile对象,其中包含了zip属性,在这个属性中,可以看到arr_0.npyarr_1.npy的信息。

>>> print(test.zip.NameToInfo)
{'arr_0.npy': <ZipInfo filename='arr_0.npy' filemode='?rw-------' file_size=40128>, 'arr_1.npy': <ZipInfo filename='arr_1.npy' filemode='?rw-------' file_size=40128>}

savez_compressed

savez_compressedsavez的唯一区别就是,前者有压缩。

刚刚通过savez存储的文件有79kb,但xy其实是相同的内容,这样存储十分奢侈,

np.savez_compressed('xyc', x, y)

最后得到的xyc只有28kb,可以说是很划算了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis缓存

内存中的一块存储空间&#xff0c;服务于某个应用程序&#xff0c;旨在将频繁读取的数据临时保存在内存中&#xff0c;便于二次快速访问。 一级缓存 SqlSession级别的缓存&#xff0c;同一个SqlSession的发起多次同构查询&#xff0c;会将数据保存在一级缓存中。 注意&#x…

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(频率特性测试仪)】

目录 序言 &#x1f34d;放置虚拟仪器仪表 &#x1f349;频率特性测试仪 &#x1f34a;&#x1f34a;1.“模式”选项组 &#x1f34a;&#x1f34a;2.“水平”选项组 &#x1f34a;&#x1f34a;3.“垂直”选项组 &#x1f34a;&#x1f34a;4.“控件”选项组 序言 N…

SpringBoot+Vue项目大学生租房平台

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

数据结构课程设计[2023-01-19]

数据结构课程设计[2023-01-19] 数据结构课程设计 一、课程设计要求 实现指定的题目&#xff08;学号最后两位%41&#xff09;&#xff0c;并撰写课程设计报告。独立完成&#xff0c;功能不完备也没关系&#xff0c;只要是自己做的 使用 C、C或者 JAVA 语言&#xff0c;采用…

​第四章 Flink 窗口和水位线​

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、时间概念&#xff1a;事件时间和处理时间 在流式处理的过程中&#xff0c;数据…

详解微信小程序开发中的“数据绑定”和代码样例

简介 首先需要区分微信小程序的运行环境和框架系统。运行环境为小程序在手机当中运行的时候&#xff0c;微信客户端所能提供的环境支持&#xff0c;也就是在这种环境下如何进行数据渲染工作&#xff1b;框架系统则是微信小程序在进行开发的过程中&#xff0c;如何通过代码实现…

数字逻辑理论——组合电路

利用数据选择器设计组合逻辑电路 m&#xff1a;组合电路输入变量个数 n&#xff1a;数据选择器的控制端个数 &#xff08;1&#xff09;mn 利用8选1数据选择器设计函数&#xff1a;FAB’A’CBC’ 待设计卡诺图&#xff1a; F∑(1,2,3,4,5,6) &#xff08;2&#xff09;m&g…

【每日一题】【LeetCode】【第十九天】【Python】汇总区间

解决之路 题目描述 测试案例&#xff08;部分&#xff09; 第一次 没有想到什么更快的方法&#xff0c;先用两个循环来写出来思路。 class Solution(object):def summaryRanges(self, nums):res []index 0n len(nums)while index < n:if index n - 1:res.append(str…

Spring_FrameWork_07(SpringMVC与SSM整合)

SpringMVC&#xff08;一种基于java实现的轻量级web框架&#xff09; 请求与响应 REST风格 SSM整合 拦截器 public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {Overrideprotected WebApplicationContext createServletApplicationCont…

【工具】用AI辅助论文/博客的写作:Obsidian+Text Generator的详细安装教程

目录 前言 介绍 Obsidian Text-Generator 使用教程 安装Obsidian 安装Text Generator 插件安装 获取开放 AI API 密钥 插件选项配置 初体验 前言 对于作家、博主和学生来说&#xff0c;这是一个很好的工具&#xff0c;它通过使用最强大的语言模型之一&#xff1a;Ope…

[数据结构基础]链式二叉树的几个典型的基础oj问题

今年是农历腊月二十九&#xff0c;提前祝大家新春快乐。这是我壬寅虎年最后一篇文章&#xff0c;感谢大家的阅读。祝大家兔年吉祥&#xff0c;身体健康、阖家幸福、学业有成、事业如意、财源滚滚&#xff01; 前置说明 本文中所有用到的二叉树及二叉树节点&#xff0c;都是由…

Fabric中的txid exists问题

Fabric 默认配置中tls证书有效期为一年&#xff0c;相信挖了不少的坑&#xff0c;我前段时间写了篇文章介绍了下解决的思路&#xff0c;但是自己真解决起来还是没解决问题&#xff0c;这种分布式企业架构太复杂。 最近有遇到一个奇怪的问题&#xff0c;小伙伴写的存证数据&…

plt自定义水平线和垂直线、水平区域和垂直区域

一、添加x轴y轴垂直辅助线 1、函数 axvline函数&#xff1a;绘制垂直线。axhline函数&#xff1a;绘制水平线。 2、参数 plt.axvline(x0, ymin0, ymax1, c"g", ls"--", lw2, labelNone)。axhline类似 x&#xff1a;垂直线在x轴上的位置。浮点数&#xf…

AcWing1227.分巧克力——学习笔记

目录 题目 代码 AC结果 思路&#xff1a; 一、设置全局变量 二、获取数据 三、当前大小可得到的巧克力数是否满足每个小朋友至少分到一块 四、二分法找每个小朋友可得到的最大大小 题目 1227. 分巧克力 - AcWing题库https://www.acwing.com/problem/content/descripti…

Python---函数相关知识

专栏&#xff1a;python 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些python的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 函数前言函数的使用函数的语法格式函数的参数函…

Python脚本集成SQLite3数据库

文章目录一、Sqlite3数据库的基本使用1.数据库是什么2.数据库分类二、正式开始使用SQLite3&#xff08;Python&#xff09;1.基础sql命令2.Python连接SQLite3①查询②增加③更新一、Sqlite3数据库的基本使用 1.数据库是什么 借用百科上的话&#xff0c;数据库是“按照数据结构…

yolo v8 解决了 v5 的问题嘛?

文章大纲 yolo v8 简介网络结构yolo v8 准确率的提升yolo v8 的速度提升参考文献与学习路径yolo v8 简介 官网: https://ultralytics.com/yolov8https://github.com/triple-Mu/YOLOv8-TensorRT详细介绍: https://learnopencv.com/ultralytics-yolov8/网络结构 yolo v8 准确率…

I.MX6ULL裸机开发笔记3:SDK烧录镜像

目录 一、获取NXP官方SDK 二、Linux安装SDK 三、SDK中相关工具 四、烧录工具 一、获取NXP官方SDK 官方网站MCIMX6ULL-EVK_i.MX6ULL评估套件_NXP 半导体 二、Linux安装SDK ./XXX.run 这里如果提示sudo ./XXX.run 找不到命令&#xff0c;就可以用ls -l查看当前文件夹文件的…

VVDocumenter-Xcode github README.md 中英文翻译

最近在学习 Xcode 的使用&#xff0c;查到有一款用于生成注释文档的插件&#xff1a;VVDocumenter-Xcode 进入其 github 页面之后看 README&#xff0c;看到两句话&#xff1a; 1. Goodbye World&#xff1a; 再不更新了&#xff1f; 2. 从 Xcode 8 之后Apple官方提供了插件做…

Python爬虫---爬虫介绍,实战案例

目录标题1、爬虫介绍1.1 爬虫的合法性1.2 网络爬虫的尺寸1.3 robots.txt协议1.4 http&https协议1.5 requests模块1.5.1 request库的异常2、实战案例2.1 百度页面2.2 爬取京东商品页面2.3 爬取亚马逊商品页面-更改headers2.4 百度/360搜索关键词提交-params2.5 网络图片的爬…