广告
返回顶部
首页 > 资讯 > 后端开发 > Python >numpy数组之读写文件的实现
  • 272
分享到

numpy数组之读写文件的实现

numpy数组读写文件numpy读写文件 2023-02-20 21:02:51 272人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录通过 numpy 读写 txt 或 csv 文件通过 numpy 读写 npy 或 npz 文件通过 h5py 读写 hdf5 文件总结References将 numpy 数组存

将 numpy 数组存入文件,有多种文件类型可供选择,对应地就有不同的方法来读写。

下面我将介绍读写 numpy 的三类文件:

  • txt 或者 csv 文件
  • npy 或者 npz 文件
  • hdf5 文件

通过 numpy 读写 txt 或 csv 文件

import numpy as np

a = np.array(range(20)).reshape((4, 5))
print(a)

# 后缀改为 .txt 一样
filename = 'data/a.csv'
# 写文件
np.savetxt(filename, a, fmt='%d', delimiter=',')

# 读文件
b = np.loadtxt(filename, dtype=np.int32, delimiter=',')
print(b)

缺点:

  • 只能保存一维和二维 numpy 数组,当 numpy 数组 a 有多维时,需要将其 a.reshape((a.shape[0], -1)) 后才能用这种方式保存。
  • 不能追加保存,即每次 np.savetxt() 都会覆盖之前的内容。

通过 numpy 读写 npy 或 npz 文件

读写 npy 文件

import numpy as np

a = np.array(range(20)).reshape((2, 2, 5))
print(a)

filename = 'data/a.npy'
# 写文件
np.save(filename, a)

# 读文件
b = np.load(filename)
print(b)
print(b.shape)

优点:

  • npy 文件可以保存任意维度的 numpy 数组,不限于一维和二维;
  • npy 保存了 numpy 数组的结构,保存的时候是什么 shape 和 dtype,取出来时就是什么样的 shape 和 dtype。

缺点:

  • 只能保存一个 numpy 数组,每次保存会覆盖掉之前文件中存在的内容(如果有的话)。

读写 npz 文件

import numpy as np

a = np.array(range(20)).reshape((2, 2, 5))
b = np.array(range(20, 44)).reshape(2, 3 ,4)
print('a:\n', a)
print('b:\n', b)

filename = 'data/a.npz'
# 写文件, 如果不指定key,那么默认key为'arr_0'、'arr_1',一直排下去。
np.savez(filename, a, b=b)

# 读文件
c = np.load(filename)
print('keys of NpzFile c:\n', c.keys())
print("c['arr_0']:\n", c['arr_0'])
print("c['b']:\n", c['b'])

优点:

  • npy 文件可以保存任意维度的 numpy 数组,不限于一维和二维;
  • npy 保存了 numpy 数组的结构,保存的时候是什么 shape 和 dtype,取出来时就是什么样的 shape 和 dtype;
  • 可以同时保存多个 numpy 数组;
  • 可以指定保存 numpy 数组的 key,读取的时候很方便,不会混乱。

缺点:

  • 保存多个 numpy 数组时,只能同时保存,即 np.savez(filename, a, b=b)。每次保存会覆盖掉之前文件中存在的内容(如果有的话)。

通过 h5py 读写 hdf5 文件

优点:

  • 不限 numpy 数组维度,可以保持 numpy 数组结构和数据类型;
  • 适合 numpy 数组很大的情况,文件占用空间小;
  • 可以通过 key 来访问 dataset(可以理解为 numpy.array),读取的时候很方便,不会混乱。
  • 可以不覆盖原文件中含有的内容。

简单读取

import numpy as np
import h5py

a = np.array(range(20)).reshape((2, 2, 5))
b = np.array(range(20)).reshape((1, 4, 5))
print(a)
print(b)

filename = 'data/data.h5'
# 写文件
h5f = h5py.File(filename, 'w')
h5f.create_dataset('a', data=a)
h5f.create_dataset('b', data=b)
h5f.close()

# 读文件
h5f = h5py.File(filename, 'r')
print(type(h5f))
# 通过切片得到numpy数组
print(h5f['a'][:])
print(h5f['b'][:])
h5f.close()
通过切片赋值
import numpy as np
import h5py

a = np.array(range(20)).reshape((2, 2, 5))
print(a)

filename = 'data/a.h5'
# 写文件
h5f = h5py.File(filename, 'w')
# 当数组a太大,需要切片进行操作时,可以不直接对h5f['a']进行初始化;
# 当之后不需要改变h5f['a']的shape时,可以省略maxshape参数
h5f.create_dataset('a', shape=(2, 2, 5), maxshape=(None, 2, 5), dtype=np.int32, compression='gzip')
for i in range(2):
    # 采用切片的形式赋值
    h5f['a'][i] = a[i]
h5f.close()

# 读文件
h5f = h5py.File(filename, 'r')
print(type(h5f))
print(h5f['a'])
# 通过切片得到numpy数组
print(h5f['a'][:])

同一个 hdf5 文件可以创建多个 dataset,读取的时候按照 key 来即可。

总结

  • csv 和 txt 只能用来存一维或二维 numpy 数组;
  • npy 用来存单个 numpy 数组,npz 可以同时存多个 numpy 数组,两者都不限 numpy 维度,且都保持 numpy 数组的 shape 和 dtype,写文件时若原文件存在只能覆盖原文件内容;
  • 当 numpy 数组很大时,最好使用 hdf5 文件,hdf5 文件相对更小;
  • 当 numpy 数组很大时,对整个 numpy 数组进行运算容易发生 MemoryError,那么此时可以选择对 numpy 数组切片,将运算后的数组保存到 hdf5 文件中,hdf5 文件支持切片索引

References

python遇上HDF5--性能优化实战 -- 张玉腾
杂: Python上数据储存:推荐h5py -- Pony_s

到此这篇关于numpy数组之读写文件的实现的文章就介绍到这了,更多相关numpy数组读写文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: numpy数组之读写文件的实现

本文链接: https://www.lsjlt.com/news/196838.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • numpy数组之读写文件的实现
    目录通过 numpy 读写 txt 或 csv 文件通过 numpy 读写 npy 或 npz 文件通过 h5py 读写 hdf5 文件总结References将 numpy 数组存...
    99+
    2023-02-20
    numpy数组读写文件 numpy读写文件
  • numpy数组读写文件怎么实现
    本篇内容介绍了“numpy数组读写文件怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通过 numpy 读写 txt 或 csv 文件...
    99+
    2023-07-05
  • python中numpy数组的csv文件写入与读取
    目录0.摘要1.文件写入与读取2.函数详解-savetxt3.函数详解-loadtxt0.摘要 本文主要介绍numpy库中,csv文件中数据的写入和读取方式。 1.文件写入与读取 写...
    99+
    2023-03-09
    numpy csv写入与读取 numpy csv写入 numpy csv读取
  • Python数据读写之Python读写CSV文件
    目录1. 读取CSV文件 csv.reader()2. 写入CSV文件1. 读取CSV文件 csv.reader() 该方法的作用相当于就是通过 ',' 分割csv格...
    99+
    2022-11-11
  • Android入门之读写本地文件的实现
    目录简介课程目标UI端后端代码运行效果简介 为了这个系列,我的代码已经准备到了第150天了。接下来的内容会越来越精彩,我们也越来越开始进入Android的一些高级功能上的编程了。今天...
    99+
    2022-12-20
    Android读写本地文件 Android 本地文件 Android读写文件
  • python中numpy数组的csv文件写入与读取方法是什么
    这篇文章主要讲解了“python中numpy数组的csv文件写入与读取方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中numpy数组的csv文件写入与读取方法是什么”吧...
    99+
    2023-07-05
  • python使用NumPy文件的读写操作
    一、使用NumPy读写文本文件 在数据分析中,经常需要从文件中读取数据或将数据写入文件,常用的存储文件的格式有文本文件、CSV格式文件、二进制格式文件和多维数据文件等。 1.将1维或...
    99+
    2022-11-12
  • C#CSV文件读写的实现
    目录为什么要用csv文件一、DataTable数据写入CSV文件二、读取CSV文件到DataTable三、修改文件名称四、CSV文件的数据写入CSV是一种通用的、相对简单的文件格式,...
    99+
    2023-03-03
    C# CSV文件读写 C# CSV 读写
  • 如何在PHP和NumPy中实现高效的异步文件读写?
    文件读写是Web应用程序中常见的任务之一。而在高并发场景下,同步的文件读写会阻塞进程,影响系统的性能表现。因此,异步文件读写成为提高Web应用程序性能的重要手段。 本文将介绍如何在PHP和NumPy中实现高效的异步文件读写,以提高Web应...
    99+
    2023-10-05
    numpy 异步编程 文件
  • R语言开发之CSV文件的读写操作实现
    在R中,我们可以从存储在R环境外部的文件读取数据,还可以将数据写入由操作系统存储和访问的文件。这个csv文件应该存在于当前工作目录中,以方便R可以读取它, 当然,也可以设置自己的目录...
    99+
    2022-11-11
  • Android编程之文件的读写实例详解
    本文实例分析了Android编程之文件的读写方法。分享给大家供大家参考,具体如下: Android的文件读写与JavaSE的文件读写相同,都是使用IO流。而且Android使用...
    99+
    2022-06-06
    程之 Android
  • python之文件的读写和文件目录以及文件夹的操作实现代码
    为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用的文件对象占用内存。举个例子,对文本文件读取: file_object = open('thefile...
    99+
    2022-06-04
    文件 文件夹 代码
  • numpy系列之数组重塑的实现
    目录1.数组重塑1.1 一维数组重塑1.2 多维数组重塑2.数组转置1.数组重塑 所谓数组重塑就是更改数组的形状。比如将原来3行4列的数组重塑成4行3列的数组。在numpy中用re...
    99+
    2022-11-12
  • python文件读写怎么实现
    这篇文章主要介绍了python文件读写怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python文件读写怎么实现文章都会有所收获,下面我们一起来看看吧。读文件打开一个文件用open()方法(open()...
    99+
    2023-06-29
  • NodeJS读写文件怎么实现
    这篇文章主要介绍了NodeJS读写文件怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇NodeJS读写文件怎么实现文章都会有所收获,下面我们一起来看看吧。简介操作文件是服务端一个基础的功能,也是做后端开发...
    99+
    2023-07-02
  • python 读写txt文件 json文件的实现方法
    首先第一步,打开文件,有两个函数可供选择:open() 和 file() ①. f = open('file.txt',‘w') ... file.close() ②. f = file(...
    99+
    2022-06-04
    文件 方法 python
  • C++文件的数据写入和文件的数据读取怎么实现
    这篇文章主要介绍了C++文件的数据写入和文件的数据读取怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++文件的数据写入和文件的数据读取怎么实现文章都会有所收获,下面我们一起来看看吧。一:没有数据,准备...
    99+
    2023-07-02
  • 一文搞懂C#实现读写文本文件中的数据
    【1】首先我们定义一段假数据,这里以一个string为例字   static void Main(string[] args) { string data = "我的数据要开始...
    99+
    2022-11-12
  • Node.js读写文件之批量替换图片的实现方法
    问题:文件夹A中有大量图片文件,需要用另外一个图片替换掉A中图片,但是命名保持不变。 手工的做法如下: 1)浏览器打开图片->2)另存为->3)目标文件夹->4)找到一个图片->5)...
    99+
    2022-06-04
    批量 文件 方法
  • Python读写二进制文件的实现
    目录1. 简介2. struct模块介绍3. struct模块中数据格式fmt对应C/C++和Python中的类型4. 实例5. Python 字符串前面加u,r,b,f的含义5.1...
    99+
    2023-05-15
    Python读写二进制文件 Python二进制文件读写
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作