python使用NumPy文件的读写操作
作者:ChristensonLee 发布时间:2023-09-27 18:04:44
一、使用NumPy读写文本文件
在数据分析中,经常需要从文件中读取数据或将数据写入文件,常用的存储文件的格式有文本文件、CSV格式文件、二进制格式文件和多维数据文件等。
1.将1维或2维数组写入TXT文件或CSV格式文件 在NumPy中,使用savetxt()函数可以将1维或2维数组写入后缀名为txt或csv的文件.函数格式为:
**numpy.savetxt(fname,array,fmt='%.18e',delimiter=None,newline='\n', header='', footer='', comments='# ', encoding=None)**
主要参数:
fname:文件、字符串或产生器,可以是.gz 或.bz2 的压缩文件
array:存入文件的数组(一维数组或者二维数组)
fmt:写入文件的格式,如:%d,%.2f,%.18e,默认值是%.18e 可选项
delimiter: 分隔符,通常情况是str可选
header:将在文件开头写入的字符串
footer:将在文件尾部写入的字符串
comments: 将附加到header和footer字符串的字符串,以将其标记为注释。
默认值:'#' encoding:用于编码输出文件的编码。
import numpy as np
arr = np.arange(12).reshape(3,4)
#fmt缺省取%.18e(浮点数)
#分割符默认是空格,写入文件保存在当前目录
np.savetxt('test-1.txt',arr)
#fmt:%d 写入文件的元素是十进制整数,分割符为逗号",",写入文件保存在当前目录
np.savetxt('test-2.txt',arr,fmt='%d',delimiter=',')
#在test-3.txt文件头部和尾部增加注释,头部 #test-3,尾部 # 数据写入注释,写入文件的元素是字符串
np.savetxt('test-3.txt',arr,fmt='%s',delimiter=',',header=\
'test-3',footer='测试数据',encoding='utf-8')
#在test-4.txt文件头部加##test-4注释
np.savetxt('test-4.txt',arr,fmt='%f',delimiter=',',header=
'test-4',comments='###')
#将arr数组保存为csv文件
np.savetxt('test-1.csv',arr,fmt='%d',header='test-1')
2.读取TXT文件和CSV格式文件 在NumPy中,读取TXT文件和CSV格式文件的函数是loadtxt(),函数格式:
numpy.loadtxt(fname,dtype=type'float'>,comments='#',delimiter=None, converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding=‘bytes')
#参数说明:
fname:被读取的文件名(文件的相对地址或者绝对地址)
dtype:指定读取后数据的数据类型
comments: 跳过文件中指定参数开头的行(即不读取)
delimiter:指定读取文件中数据的分割符
converters: 对读取的数据进行预处理
skiprows:选择跳过的行数
usecols:指定需要读取的列
unpack:选择是否将数据进行向量输出
encoding:对读取的文件进行预编码
a = np.loadtxt('test-1.txt')
#读入当前目录下的文件 test-1.txt
print(a)
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
# skiprows:指跳过前1行, 如果设置skiprows=2, 就会跳过前两行,数据类型设置为整型.
a = np.loadtxt('test-1.txt', skiprows=1, dtype=int)
print(a)
[[ 4 5 6 7]
[ 8 9 10 11]]
# comment, 如果行的开头为#就会跳过该行
a = np.loadtxt('test-4.txt', skiprows=2, comments='#',delimiter=',')
b = np.loadtxt('test-4.txt',comments='#',delimiter=',')
print(a,b,sep='\n')
[[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
# usecols:指定读取的列,若读取0,2两列
aa = np.loadtxt('test-3.txt',dtype=int, skiprows=1,delimiter=',',usecols=(0, 2))
#unpack是指会把每一列当成一个向量输出, 而不是合并在一起。
(a, b) = np.loadtxt('test-2.txt', dtype=int, skiprows=1,
comments='#', delimiter=',',
usecols=(0, 2), unpack=True)
print(aa,a, b,sep='\n')
[[ 0 2]
[ 4 6]
[ 8 10]]
[4 8]
[ 6 10]
#读取csv文件
aa = np.loadtxt('test-1.csv',skiprows=1)
print(aa)
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
二、使用NumPy读写二进制文件
1.使用save()或savez()函数写二进制格式文件
save函数将数组以未压缩的原始二进制格式保存在扩展名为.npy的文件中。会自动处理元素类型和形状等信息。
savez函数将多个数组压缩到一个扩展名为npz的文件,其中每个文件都是一个save()保存的npy文件,文件名和数组名相同
save()或savez()函数的格式:
numpy.save(file,array)
numpy.savez(file,array)
2.使用load()函数读取二进制格式文件
load()函数的格式: numpy.load(file)
import numpy as np
a = np.arange(12).reshape(3,4)
print('原数组a:\n',a)
np.save('arr1.npy', a) #将数据存储为npy,保存时可以省略扩展名,默认.npy
c = np.load('arr1.npy') #读取arr1.npy的数据,读取数据时不能省略 .npy
print('读取后的数据:\n',c)
ar = np.arange(6).reshape(3,2)
print('保存前的数组:',a,ar,sep='\n')
np.savez('arr2.npz',a,ar) #多数组存储,默认文件名.npz
b = np.load('arr2.npz')
print('读取后的数据:')
print(b['arr_0'],b['arr_1'],sep='\n')
原数组a:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
读取后的数据:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
保存前的数组:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[0 1]
[2 3]
[4 5]]
读取后的数据:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[0 1]
[2 3]
[4 5]]
for i in b.items():
print(i)
('a', array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]))
('ar', array([[0, 1],
[2, 3],
[4, 5]]))
来源:https://blog.csdn.net/ChristensonLee/article/details/115427532


猜你喜欢
- 最终效果展示实现思路在绘图区域插入一个嵌入图,嵌入图与原图的绘画保持一致,通过限制嵌入图的x轴和y轴的显示范围,达到缩放的效果,并在原图上绘
- Python3中print函数的换行最近看了看Python的应用,从入门级的九九乘法表开始,结果发现Python3.x和Python2.x真
- Python中的数据类型共有六个,分别是:字符串,数字,布尔类型,列表,元祖,字典,集合其中分为可变的类型和不可变的:可变类型:列表,字典,
- 看到一篇Implementing an Infinite Scroll with Vue.js , 觉得挺实用的就看了下, 顺便简单翻译了一
- 为什么要模拟登录有些网站是需要登录之后才能访问的,即便是同一个网站,在用户登录前后页面所展示的内容也可能会大不相同,例如,未登录时访问Git
- 1. 背景在深度学习的任务中,通常需要比较长时间的训练,因此我们会选择离开电脑。笔者在跟踪模型表现,观察模型accuracy 以及 loss
- 第一种--对象键值去重Array.prototype.unique1 = function () { var r
- 程序开始一、基本使用1、创建一个游戏窗口出来代码如下:# coding:utf8import pygameimport sys# 初始化py
- 导语哈喽!大家好,我是木木子。今日游戏更新系列来啦,是不是很想知道今天的游戏是什么类型的?立马安排上——随着年纪的不断上升,我们开始丢三落四
- ASP具备动态输出任一Office应用程序文件格式的功能。在开始编写代码之前,我们首先需要做的就是设置正确的文件类型,因为浏览器需要知道如何
- 首先你要明白24bit的bmp图片的基本信息:1像素占3个字节,头部占54个字节。好了,现在开始做验证码了,这里以4位验证码(大小为20(高
- mssql的每个varchar、text字段都被自动插入一段js代码,即使删除这段代码,如果没有从源头上解决,几分钟后,js代码就又会自动插
- Python读取配置文件-ConfigParser二次封装直接上上代码test.conf[database]connect = mysqls
- Python 多进程默认不能共享全局变量主进程与子进程是并发执行的,进程之间默认是不能共享全局变量的(子进程不能改变主进程中全局变量的值)。
- 前提1.python环境及tensorflow安装成功2.Anaconda安装好 ,Anaconda安装步骤安装步骤1.下载facenet,
- 到底什么是Python?•Python是一种解释性语言。Python代码在运行之前不需要编译。其它解释性语言还包括PHP和Ruby。•Pyt
- zip文件是我们经常使用的打包格式之一,python解压和压缩zip效率非凡。 python解压zip文档:#/usr/bin/python
- 本文实例讲述了Python实现Sqlite将字段当做索引进行查询的方法。分享给大家供大家参考,具体如下:默认从sqlite中获取到的数据是数
- 1、get方法请求接口url:显而易见,就是接口的地址url啦headers:请求头,例如:content-type = applicati
- 问题最近,在用SSH框架完成一个实践项目时,碰到了一个莫名其妙的Bug困扰了我好久,最后终于解决,记录如下。问题:同学在测试系统的时候突然发