本章主要介绍的是数据的CSV文件存取和多维数据的存取。

一、数据的CSV文件存取

1、CSV的写文件:

np.savetxt(frame, array, fmt='%.18e', delimiter=None)

  1. frame:文件、字符串或产生器,可以是.gz或.bz的压缩文件;
  2. array:存入文件的数组;
  3. fmt:写入文件的格式,例如:%d、%.2f、%.18e;
  4. delimiter:分割字符串,默认是任何空格。

举个栗子:用Numpy生成5 * 20的二维数组,并且把该数组保存到a.csv的文件中:

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

2、CSV的读文件:

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

  1. frame:文件、字符串或产生器,可以是.gz或.bz的压缩文件;
  2. dtype:数据类型,可选;
  3. delimiter:分割字符串,默认是任何空格;
  4. unpack:如果True,读入属性将分别写入不同变量。

举个栗子:读a.csv的文件:

b = np.loadtxt('a.csv', dtype=np.int, delimiter=',')
print(b)
[[ 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 50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99]]

备注:但是CSV文件有自身的局限性,只能有效的存储一维和二维数组。

二、多维数据的存取

常规文件的存取:
1、写文件:

a.tofile(frame, sep=' ', format='%s')

  1. frame:文件、字符串;
  2. sep:数据分割字符串,如果是空串,写入文件为二进制;
  3. format:写入数据格式。

举个栗子:将三维数组写入b.dat中:

import numpy as np
a = np.arange(100).reshape(5, 10, 2)
a.tofile("b.dat", sep=",", format='%d')

2、读文件:
np.fromfile(frame, dtype=float, count=-1, sep=' ')

  1. frame:文件、字符串;
  2. dtype:读取的数据类型;
  3. count:读入元素个数,-1表示读入整个文件;
  4. sep:数据分割字符串,如果是空串,读入文件为二进制。

举个栗子:将b.dat文件读文件:

c = np.fromfile("b.dat", dtype=np.int, sep=",").reshape(5, 10, 2)
print(c)
[[[ 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]
[50 51]
[52 53]
[54 55]
[56 57]
[58 59]] [[60 61]
[62 63]
[64 65]
[66 67]
[68 69]
[70 71]
[72 73]
[74 75]
[76 77]
[78 79]] [[80 81]
[82 83]
[84 85]
[86 87]
[88 89]
[90 91]
[92 93]
[94 95]
[96 97]
[98 99]]]

Numpy的便捷文件存取:

1、写文件:
np.save(frame, array)   或np.savez(frame, array)

  1. frame:文件名,以.npy为扩展名,压缩扩展名为.npz;
  2. array:数组变量。

2、读文件:

np.load(frame)

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

举个栗子:

a = np.arange(100).reshape(5, 10, 2)
np.save("a.npy", a)
b = np.load("a.npy")
print(b)

备注说明:Numpy的读文件不需要知道数据的维度即可还原成原先的维度,但是常规读文件时必须指定文件的维度。

(三)初识NumPy(数据CSV文件存取和多维数据的存取)的更多相关文章

  1. NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构

    本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...

  2. 机器学习:PCA(高维数据映射为低维数据 封装&调用)

    一.基础理解 1) PCA 降维的基本原理 寻找另外一个坐标系,新坐标系中的坐标轴以此表示原来样本的重要程度,也就是主成分:取出前 k 个主成分,将数据映射到这 k 个坐标轴上,获得一个低维的数据集. ...

  3. 微软BI 之SSAS 系列 - 多维数据集中度量值设计时的聚合函数 (累加性_半累加性和非累加性)

    在 SSAS 系列 - 实现第一个 Cube 以及角色扮演维度,度量值格式化和计算成员的创建 中主要是通过已存在的维度和事实数据创建了一个多维数据集,并同时解释了 Role-Playing Dimen ...

  4. 【转】 TechED2010与我(三) —— 初识云计算

    作者用到的比喻很好. 网址:TechED2010与我(三) -- 初识云计算 初识云计算最近"云计算"被炒的很热,但是由于工作重点主要是做WinForm的控件开发,对云计算的接触比 ...

  5. 用NPOI实现导入导出csv、xls、xlsx数据功能

    用NPOI实现导入导出csv.xls.xlsx数据功能   直接上代码 首先定义一个接口   如果需要直接操作文件的话,就自己在封装一次 然后定义csv类的具体实现 这个需要引入命名空间LumenWo ...

  6. Linux学习之CentOS(三)--初识linux的文件系统以及用户组等概念

    Linux学习之CentOS(三)--初识linux的文件系统以及用户组等概念 进入到了Linux学习之CentOS第三篇了,这篇文章主要记录下对linux文件系统的初步认识,以及用户组.用户权限.文 ...

  7. [数据科学] 从csv, xls文件中提取数据

    在python语言中,用丰富的函数库来从文件中提取数据,这篇博客讲解怎么从csv, xls文件中得到想要的数据. 点击下载数据文件http://seanlahman.com/files/databas ...

  8. Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken

    前言 前面已经写了两篇关于docker的博文了,在工作中有关docker的基本操作已经基本讲解完了.相信现在大家已经能够熟练配置docker以及使用docker来创建镜像以及容器了.本篇博客将会讲解如 ...

  9. $python数据分析基础——初识numpy库

    numpy库是python的一个著名的科学计算库,本文是一个quickstart. 引入:计算BMI BMI = 体重(kg)/身高(m)^2 假如有如下几组体重和身高数据,让求每组数据的BMI值: ...

随机推荐

  1. [Luogu3787] 冰精冻西瓜

    题目背景 盛夏,冰之妖精琪露诺发现了一大片西瓜地,终于可以吃到美味的冻西瓜啦. 题目描述 琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地.这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有 ...

  2. vue在一个方法执行完后再执行另一个方法

    vue在一个方法执行完后执行另一个方法 用Promise来实现.Promise是ES6的新特性,用于处理异步操作逻辑,用过给Promise添加then和catch函数,处理成功和失败的情况 ES7中新 ...

  3. 关于git提交

    16年申请注册的git账号,除了需要找一些有用的demo时会逛一下,其实一直没拿起来真实用过. 好了,说一下今天下午呕心沥血弄出来的东西,其实就是简单的用git小黑窗口推文件夹上去,本人较笨,会按照我 ...

  4. eclipse安装相关

    一 安装相关 1.下载eclipse(这里我下载了个简单版本) https://www.eclipse.org/downloads/packages/

  5. 面试官,不要再问我“Java虚拟机类加载机制”了

    关于Java虚拟机类加载机制往往有两方面的面试题:根据程序判断输出结果和讲讲虚拟机类加载机制的流程.其实这两类题本质上都是考察面试者对Java虚拟机类加载机制的了解. 面试题试水 现在有这样一道判断程 ...

  6. 由浅入深:Python 中如何实现自动导入缺失的库?

    在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx' 或者 ModuleNotFoundError: No mod ...

  7. 面试官:"准备用HashMap存1w条数据,构造时传10000还会触发扩容吗?"

    // 预计存入 1w 条数据,初始化赋值 10000,避免 resize. HashMap<String,String> map = new HashMap<>(10000) ...

  8. Spring Boot Mail 实现邮件发送

    此 demo 主要演示了 Spring Boot 如何整合邮件功能,包括发送简单文本邮件. 邮件服务在开发中非常常见,比如用邮件注册账号.邮件作为找回密码的途径.用于订阅内容定期邮件推送等等,下面就简 ...

  9. angularjs通过ng-bind-html指令和$sce服务绑定html

    代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8 ...

  10. Shell进阶精品课程

    课程链接 Shell精品进阶教程:理解Shell的方方面面 课程目标 系统性的掌握shell相关知识,进阶shell脚本能力,对shell各方面了然于心 适用人群 具备shell基础但想深入.系统性掌 ...