python数据分析与展示学习笔记(2)csv文件的存取和高维数组存取

      csv文件即逗号分隔值文件(Comma-Separated Values有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。常用于存储一维/二维数据。

1.numpy中提供了写入的函数

np.savetxt(fname,array,fmt='%.18e',delimiter=None)       #%.18e是以科学计数法保留18位小数的浮点数形式

其中

  • fname:文件、字符串、产生器的名字,也可以是.gz/.bz2压缩文件名
  • array:要存入文件的数组
  • fmt:将元素写入文件的格式
  • delimiter:数据间的分割字符串,csv中需要定义为逗号

下面给出一个例子:

import numpy as np
a = np.arange(100).reshape(5,20)
np.savetxt('D:/myPython/work1.csv',a,fmt='%d',delimiter=',')

运行结果:

2.numpy提供了读出的函数

np.loadtxt(fname,dtype=np.float,delimiter=None,unpack=False)

其中

  • fname:文件、字符串、产生器的名字,也可以是.gz/.bz2压缩文件名
  • dtype:将csv文件中的字符串变成特定格式
  • delimiter:解析时数据间的分割字符串,csv中需要定义为逗号
  • unpack:默认False,读入的数据写入一个数组,若为True,按读入属性分别写入不同变量。

下面给出一例

import numpy as np
b=np.loadtxt('D:/myPython/work1.csv',dtype=np.float,delimiter=',')

运行结果:

以上两个函数是针对一维和二维数据的存取,而对于多维数据,可采用以下两种方法。

方法一:

3.a.tofile(fname,sep='',format='%s')(a为事先定义的ndarray数组)

其中

  • fname:文件、字符串、产生器的名字,也可以是.gz/.bz2压缩文件名
  • sep:数据分割的字数串,若为空,则认为写入二进制
  • format:写入数据的格式

4.np.fromfile(fname,dtype=float,count=-1,sep='')

  • fname:文件、字符串、产生器的名字,也可以是.gz/.bz2压缩文件名
  • dtype:读取的数据类型
  • count:读入元素个数,-1则读入整个文件
  • sep:数据分割的字符串

给出一例:

import numpy as np
a=np.arange(100).reshape(5,10,2)
a.tofile('D:/myPython/work2.dat',sep=',',format='%d')
c=np.fromfile('D:/myPython/work2.dat',dtype=np.int,sep=',').reshape(5,10,2)

例中需要注意的是,写入和读出的数据格式必须一致,写入文件其实写入的是序列,维度信息需要在读出时重新再使用一次reshape,获取原本的信息。由于存入时维度信息会被丢失,所以读出者必须知道原本的维度信息才能将数组还原,这是这种方法的缺点。

方法二:

使用numpy提供的np.save(np.savez)和np.load

5.np.save(fname,array)或np.savz(fname,array)

其中

  • fname:文件名,以.npy为扩展名,压缩扩展名为.npz
  • array:数组变量

6.np.load(fname)

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

这种方法使用时非常简单快捷,存入时已经将原数组的形状维度等信息存入文件,只要使用load函数就能自动解析出原数组,缺点是这种方式必须使用numpy给出的自定义文件格式。个人觉得这个方法更好用。

使用代码:

import numpy as np
a=np.arange(100).reshape(5,10,2)
np.save('a.npy',a)
b=np.load('a.npy')

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值