通常情况下,数据是以文件形式存储的。常用的存储文件的格式有文本文件、CSV 格式文件、二进制格式文件和多维数据文件等。其中 CSV(Comma-Separated Value,逗号分隔值)格式是一种常见的文件格式。通常,数据库的转存文件就是 CSV 格式的,文件中的各个字段对应于数据库表中的列。众所周知,电子表格软件(如Microsoft Excel)可以处理 CSV 文件。

在数据分析中,经常需要从文件中读取数据或将数据写入文件,因此,学会读写文件操作是深入学习 NumPy 的基础。下面将分别介绍如何使用 NumPy 函数来读写一维或二维数组的文本文件、CSV 格式文件、二进制格式文件和多维数据文件。

使用 NumPy 读写文本文件

在 NumPy 中,loadtxt() 和 savetxt() 函数可以对文件后缀名为 .txt 和 .csv 的文件进行读写操作。

1. 将一维或二维数组写入 TXT 文件或 CSV 格式文件

在 NumPy 中,使用 savetxt() 函数可以将一维或二维数组写入后缀名为 .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:分割符,默认是空格;

newline:换行符;

header:在文件开头写入的字符串;

footer:在文件末尾写入的字符串;

comments:为添加到页眉和页脚的字符串标记注释符,默认值为#;

encoding:设置输出文件的编码。如果编码不是 bytes 或 latin1,将无法在 NumPy 1.14 以下版本中加载该文件,默认为 latin1。

其中,newline 参数是 NumPy 1.5.0 版本中的新功能,header、footer、comments 参数是 NumPy 1.7.0 版本中的新功能,encoding 参数是 NumPy 1.14.0 版本中的新功能。这 5 个参数都是可选项。

【例 1】创建一个元素范围为 0~11 的 3 行 4 列的数组,然后设置不同的参数,将该数组写入 TXT 文件和 CSV 文件。代码如下。

-- coding: utf-8 --

import numpy as np

arr = np.arange(12).reshape(3,4)

#fmt默认取%.18e(浮点数),分割符默认是空格,写入文件保存在当前目录

np.savetxt(‘test1.txt’,arr)

#写入文件的是十进制整数

np.savetxt(‘test2.txt’,arr,fmt=’%d’,delimiter=’,’)

#在test3.txt文件头部和尾部都加#test3注释,写入的文件是字符串

np.savetxt(‘test3.txt’,arr,fmt=’%s’,delimiter=’,’,header=‘test3’,footer=‘test3’)

#在test4.txt文件头部加##test4注释

np.savetxt(‘test4.txt’,arr,fmt=’%d’,delimiter=’,’,header=‘test4’,comments=’##’)

#将arr数组保存为CSV文件

np.savetxt(‘test.csv’,arr,fmt=’%d’,delimiter=’,’,header=‘test’)

2. 读取 TXT 文件和 CSV 格式文件

在 NumPy 中,读取 TXT 文件和 CSV 格式文件的函数是 loadtxt(),该函数格式如下:

numpy.loadtxt(fname,dtype=,comments=’#’,delimiter=None,convert

ers=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding='byte

函数中参数说明如下:

fname:文件、字符串或产生器,可以是 .gz 或 .bz2 为扩展名的压缩文件;

dtype:数据类型;

delimiter:分割符,默认是空格;

usecols:选取数据的列;

unpack:如果 True,读入属性将分别写入不同变量;

comments:注释符,默认值为 #;

converters:转换器,数据列和转换函数之间进行映射的字典;

skiprows:跳过第一行的行数,默认值为 0;

ndmin:返回的数组至少具有ndmin维度。值为 0(默认值)、1 或 2;

encoding:用于解码输入文件的编码,默认为 bytes。

其中,除了 fname 参数外,其余参数为可选项。

【例 2】利用 NumPy 函数实现读取 TXT 文件和 CSV 格式文件的操作。

① 将上面中所创建的 test1.txt、test2.txt、test3.txt、test4.txt 和 test.csv文件的数据读取并保存到数组中。

② 创建学生通讯录的 CSV 文件,该文件中包含学生姓名、电话和 E-mail,并将其保存为 phone.csv 文件,然后从该文件中读取数据并保存到数组中。其中,学生通讯录 CSV 格式文件(列表形式,两值之间用逗号隔开)的数据如下。

id,name,tel,email

1,李明,13873321234,liming@163.com

2,王红,13656722231,wanghong@163.com

3,张艳,18534512367,zhangyan@sina.com

其代码如下。

-- coding: utf-8 --

import numpy as np

#从test1.txt文件中读取数据

arr1 = np.loadtxt(‘test1.txt’)

print(arr1)

#从test2.txt文件中读取数据

arr2 = np.loadtxt(‘test2.txt’,delimiter=’,’)

#从test3.txt文件中读取数据

arr3 = np.loadtxt(‘test3.txt’,dtype=np.int32,delimiter=’,’)

#从test4.txt文件中读取数据

arr4 = np.loadtxt(‘test4.txt’,delimiter=’,’)

print(arr2,arr3,arr4)

#从csv文件中读取数据

arr5 = np.loadtxt(‘test.csv’,delimiter=’,’)

arr6 = np.loadtxt(‘phone.csv’,dtype=np.str,delimiter=’,’)

print(arr5,arr6)

使用 NumPy 读写二进制格式文件

在 NumPy 中,load() 和 save() 函数是专门用于读写二进制格式文件的,它们具有自动处理数组元素类型和形状的功能。savez() 函数能提供将多个数组存储至一个文件的能力,save() 函数保存之后后缀名为 npy,savez() 函数保存之后后缀名 .npz。

使用解压程序打开 npz 文件可以看到里面是若干个以“数组名称”命名的 NPY 格式的文件,数组名称默认为“arr_数字”的形式,在 savez() 函数中可以通过指明函数的参数名称来命名数组。

1. 使用 save() 或 savez() 函数写二进制格式文件

save() 或 savez() 函数的格式如下:

numpy.save(file,array) 或 numpy.savez(file,array)

函数中参数说明如下:

file:文件名,以 .npy 为扩展名,压缩扩展名为 .npz;

array:数组变量。

2. 使用 load() 函数读取二进制格式文件

load() 函数的格式如下:

numpy.load(file)

其中,file 为文件名,以 .npy 为扩展名,压缩扩展名为 .npz。

load()、save() 和 savez() 函数的示例代码 example1 如下。

-- coding: utf-8 --

import numpy as np

#load和save函数的示例代码

arr1 = np.arange(30).reshape(3,5,2)

np.save(‘arr1.npy’,arr1)

arr_a = np.load(‘arr1.npy’)

print(arr_a)

#load和savez函数的示例代码

arr2 = np.arange(20).reshape(4,5)

np.savez(‘arr2.npz’,arr1,arr2)

arr_b = np.load(‘arr2.npz’)

print(arr_b)

使用 NumPy 读写多维数据文件

在 NumPy 中,tofile() 和 fromfile() 函数可用于读写多维数据文件。

1. 使用 tofile() 函数写入多维数据文件

tofile() 函数的格式如下:

数组名.tofile(fid, sep=’’, format=’%s’)

函数中的参数说明如下:

fid:文件、字符串;

sep:数据分割符,如果是空串,写入文件为二进制,即默认为空串;

format:写入数据的格式。

  1. 使用 fromfile() 函数读取多维数据文件

fromfile() 函数的格式如下:

numpy.fromfile(file,dtype=float,count=‐1,sep=’’)

函数中的参数说明如下:

file:文件、字符串;

dtype:读取的数据类型。读取数据的时候都需要指定数据类型,默认为浮点型;

count:读入元素个数,-1 表示读入整个文件;

sep:数据分割符,如果是空串,写入文件为二进制形式。

tofile() 和 fromfile() 函数的示例代码 example2 如下。

-- coding: utf-8 --

import numpy as np

#tofile和fromfile函数的示例代码

arr1 = np.arange(30).reshape(3,5,2)

arr1.tofile(‘arr.dat’,sep=’,’,format=’%d’)

arr = np.fromfile(‘arr.dat’,dtype=np.int32,sep=’,’).reshape((5,3,

print(arr)

numpy读取txt文件相关推荐

  1. load python txt文件_详解Python中numpy.loadtxt()读取txt文件

    为了方便使用和记忆,有时候我们会把 numpy.loadtxt() 缩写成np.loadtxt() ,本篇文章主要讲解用它来读取txt文件. 读取txt文件我们通常使用 numpy 中的 loadtx ...

  2. python读取txt文件并画图

    1,使用python读取txt文件 已知txt文件内容如下: 0 01 12 43 94 165 256 36 请以第一列为x轴,第二列为y轴画图 步骤如下: 1)使用readlines读取文件 2) ...

  3. python读取txt文件写入-Python读写txt文本文件的操作方法全解析

    一.文件的打开和创建 >>> f = open('/tmp/test.txt') >>> f.read() 'hello python! hello world! ...

  4. python导入txt为dataframe-python批量读取txt文件为DataFrame的方法

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

  5. python读取整个txt文件-python怎么读取txt文件内容

    读取文件: 步骤:打开 -- 读取 -- 关闭>>> f = open('/tmp/test.txt') >>> f.read() 'hello python! h ...

  6. python导入txt文件并绘图-Python实现读取txt文件并画三维图简单代码示例

    记忆力差的孩子得勤做笔记! 刚接触python,最近又需要画一个三维图,然后就找了一大堆资料,看的人头昏脑胀的,今天终于解决了!好了,废话不多说,直接上代码! #由三个一维坐标画三维散点 #codin ...

  7. python读取txt文件代码-Python实现读取txt文件并画三维图简单代码示例

    记忆力差的孩子得勤做笔记! 刚接触python,最近又需要画一个三维图,然后就找了一大堆资料,看的人头昏脑胀的,今天终于解决了!好了,废话不多说,直接上代码! #由三个一维坐标画三维散点 #codin ...

  8. python怎么读取txt文件-python怎么读取txt文件内容

    读取文件: 步骤:打开 -- 读取 -- 关闭>>> f = open('/tmp/test.txt') >>> f.read() 'hello python! h ...

  9. python怎么分行读取txt文件_python怎么读取txt文件内容

    详细内容 读取文件: 步骤:打开 -- 读取 -- 关闭>>> f = open('/tmp/test.txt') >>> f.read() 'hello pyth ...

  10. Python中读取txt文件的三种可行办法

    DataTest.txt中的文件内容,文件最后尽量不要留空行,否则有的时候会出现error 1,2,3 4,5,6 7,8,9 第一种方式:使用 csv.reader()读取txt文件 import ...

最新文章

  1. C语言通路寻找,用C语言解决迷宫问题设计与寻找通路问题.pdf
  2. 长庆企业信息化管理课件_详解:企业信息化管理系统,不能马虎对待
  3. 八十、 Springboot整合异步任务和定时任务
  4. 禁止复制粘贴_网页禁止复制粘贴? 教你5招, 绕过网页限制, 免费复制全网内容!...
  5. SaaS CRM系统存在的五大安全漏洞
  6. 2019无盘游戏服务器128g内存,云更新无盘客户端 v2019.8.15.12486官方版
  7. pycharm 修改默认的注释风格(reStructuredText风格、Google风格、Numpy风格)
  8. js中filter函数
  9. 不在更改国内网络账号的ID了
  10. 基于鱼群算法的函数寻优
  11. DVP MIPI-CSI 摄像头接口的区别
  12. c#获取软件版本、windows用户名、windows用户目录、.net版本、windows版本等
  13. 计算机的硬盘有几个分区,电脑硬盘分几个区合适?电脑硬盘分区小窍门
  14. 带轮轮毂长度l和带轮宽b表_V带轮宽度怎么计算?知道是A型带,带数为6,轮缘宽、轮彀孔径与长度怎么计算?顺求公式...
  15. Noi 十连测 Zbox loves meizi
  16. Social LSTM全文翻译
  17. 系统默认进程参考与对比
  18. sina\tent微博分享
  19. 十、C#接口、抽象、密封、开放封闭原则
  20. Python + Selenium实现web端的UI自动化

热门文章

  1. Redis反序列化错误Could not read JSON: Cannot construct instance of `java.util.ArrayList$SubList`
  2. Docker下载安装
  3. Unity中屏幕坐标、视口坐标和世界坐标、局部坐标与其之间的相互转换
  4. YUV格式与RGB格式
  5. Modbus_TCP 报文格式解析
  6. 百度地图行政区划遮罩+描点+信息窗demo
  7. centos7镜像文件
  8. CAS5.3版本对接Jenkins单点登录
  9. 高斯核原理详解+生成高斯核的Python代码
  10. jquery表单的提交