前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据分析 ——— numpy基础(三)

数据分析 ——— numpy基础(三)

作者头像
andrew_a
发布2019-07-30 15:20:53
1.1K0
发布2019-07-30 15:20:53
举报
文章被收录于专栏:Python爬虫与数据分析

上两篇文章我们介绍了numpy函数一些基本用法,以及其扩展函数的用法。在这里介绍一下numpy库来进行文件的读写。

一、利用numpy读取文件

1. numpy进行存、储读取csv文件

CSV(以逗号为分割符),是一种常见的文件格式,用来存储批量数据

存储:

代码语言:javascript
复制
# 文件存储
np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', 
          header='', footer='', comments='# ', encoding=None)
  • fname: 文件,字符串,可以是.gz或者.bz2的压缩文件
  • X: 存入文件的数组
  • fmt: 写入文件的格式,例如:%d %.2f %.18e
  • delimiter: 分割列的字符串,默认是任何空格
  • newline: 分割行的字符串
  • header: 文件头

读取:

代码语言:javascript
复制
# 文件读取
np.loadtxt(fname,  delimiter=None, skiprows=0,
           usecols=None)
  • fname: 所要读取的文件名
  • delimiter: 分割列的字符串,默认是任何空格
  • skiprows: 跳过第一行,默认为0, 通常跳过文件头
  • usecols: 所想要选取的列

例1, 存储:

代码语言:javascript
复制
# 存储
import numpy as np
a = np.arange(50).reshape(5, 10)
# 保存为.txt文件
file = np.savetxt('./test/a.csv', a, fmt = '%d',delimiter=',')

所保存文件如下:

例2,读取:

代码语言:javascript
复制
# 文件读取
np_file = np.loadtxt('./test/a.csv', delimiter=',')
print(np_file)
# 只取第一列和第五列数据
np_file1 = np.loadtxt('./test/a.csv',usecols=(0, 4), delimiter=',')
print(np_file1)

"""
np_file: [[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9.]
           [10. 11. 12. 13. 14. 15. 16. 17. 18. 19.]
           [20. 21. 22. 23. 24. 25. 26. 27. 28. 29.]
           [30. 31. 32. 33. 34. 35. 36. 37. 38. 39.]
           [40. 41. 42. 43. 44. 45. 46. 47. 48. 49.]]
第1列和第五列数据 [[ 0.  4.]
                 [10. 14.]
                 [20. 24.]
                 [30. 34.]
                 [40. 44.]]
"""

注意: csv只能有效存储一维和二维数组,np.savetxt(), np.loadtxt()也只能有效存储一维和二维数组

2. numpy 进行多维数据的存取:

存储:

代码语言:javascript
复制
a.tofile(fid, sep="", format="%s")
  • fid: 文件、字符串
  • sep: 数据分割字符串,如果是空串,写入文件为二进制
  • format: 写入数据的格式

读取:

代码语言:javascript
复制
fromfile(file, dtype=float, count=-1, sep='')
  • file: 文件、字符串
  • dtype: 读取的数据类型
  • count:读入元素个数,-1表示读入整个文件
  • sep:数据分割字符串,如果是空串,写入文件为二进制

存储:

代码语言:javascript
复制
# 多维数组的存储
b = np.arange(50).reshape(5, 5, 2)
b.tofile("./test/b.bat", sep=",", format="%d")

读取:

代码语言:javascript
复制
# 多维数组的读取
np.fromfile('./test/b.bat', dtype=np.int, sep=',')
"""
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
       34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49])
"""
np.fromfile('./test/b.bat', dtype=np.int, sep=',').reshape(5, 5,2)
"""
array([[[ 0,  1], [ 2,  3], [ 4,  5], [ 6,  7], [ 8,  9]],
        [[10, 11], [12, 13], [14, 15], [16, 17], [18, 19]],
        [[20, 21], [22, 23], [24, 25], [26, 27], [28, 29]],
        [[30, 31], [32, 33], [34, 35], [36, 37], [38, 39]],
        [[40, 41], [42, 43], [44, 45], [46, 47], [48, 49]]])
"""

注意:该方法在读取时需要知道存入文件时数组的维度和元素类型,b.tofile()和np.fromfile()需要配合使用 可以通过元数据文件来存储额外信息。

3. numpy的便捷文件存取

代码语言:javascript
复制
np.save(file, arr)   np.savez(file, arr)
  • file: 文件名, 以.npy为扩展名, 压缩扩展名为.npz
  • arr: 数组变量

load()自动识别npz文件,并且返回一个类似于字典的对象,可以通过数组名作为键获取数组的内容。

代码语言:javascript
复制
np.load(file)
  • file: 文件名, 以.npy为扩展名, 压缩扩展名为.npz
代码语言:javascript
复制
a = np.arange(50).reshape(5,5,2)
np.save("a.npy", a)
b = np.load('a.npy')
print(b)

用这种方式来对数据进行存储,方便在深度学习中, 保存训练集,验证集,测试集,还包括他们的标签,用这个方式存储起来,要啥加载啥,文件数量大大减少,也不会到处改文件名。算是一种较好的存储数据的方式。

精彩推荐

python图像识别——图片相似度计算

win10下安装GPU版本的TensorFlow(cuda + cudnn)

TensorFlow-GPU线性回归可视化代码,以及问题总结

所有爬虫文章的归类

基于selenium自动化的滑动验证码破解

抓取58job, 赶集job以及智联招聘,并使用数据分析生成echarts图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫scrapy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档