Python数据科学入门 (pdf+epub+mobi+txt+azw3)
第 5 章 使用表格形式的数值数据
各种文本文档是原始数据的主要来源,而这些文本的格式通常以数值为主。例如Excel和CSV电子表格,尤其是数据库表,它们可能包含数百万或数十亿的数值记录。Python核心无疑是一款优秀的文本处理工具,但有时候它的数值运算性能却不尽如人意,numpy 模块就是为了弥补这方面的缺陷而诞生的。
NumPy(Numeric Python,以numpy 导入)是一系列高效的、可并行的、执行高性能数值运算的函数的接口。numpy 模块提供了一种新的Python数据结构——数组(array),以及特定于该结构的函数工具箱。该模块还支持随机数、数据聚合、线性代数和傅里叶变换等非常实用的数值计算工具。
仙境之桥
如果程序需要访问大量的数值数据(例如TB量级,甚至更大),那就一定会用到h5py 模块1 。该模块是HDF5 二进制数据格式的入口,可以与许多第三方软件(比如IDL和MATLAB)配合使用。h5py 模仿了大家所熟悉的numpy 和Python的一些机制,例如数组和字典。只要学会了numpy ,就能很自然地运用h5py ,因此本书不再介绍h5py 的相关内容。
1 www.h5py.org
在本章中,你将学习如何创建不同形状的numpy 数组,基于不同的源创建numpy 数组,数组的重排和切片操作,添加数组索引,以及对某些或所有数组元素进行算术运算、逻辑运算和聚合运算。
第21单元 创建数组
numpy 数组比原生的Python列表更为紧凑和高效,尤其是在多维的情况下。但与列表不同的是,数组的语法要求更为严格:数组必须是同构的。这意味着数组项不能混合使用不同的数据类型,而且不能对不同数据类型的数组项进行匹配操作。
创建numpy 数组的方法很多。可以使用函数array() ,基于类数组(array-like)数据创建数组。所谓的类数组数据可以是列表、元组或另一个数组。numpy 基于数据本身推断出数组元素的类型,当然,你也可以给array() 传递确定的dtype 参数。numpy 支持的数据类型接近二十种,例如bool_ 、int64 、uint64 、float64 和<U32 (针对Unicode字符串)。
为获得较高的效率,numpy 在创建一个数组时,不会将数据从源复制到新数组,而是建立起数据间的连接。也就是说,在默认情况下,numpy 数组相当于是其底层数据的视图,而不是其副本。如果底层数据对象发生改变,则相应的数组数据也会随之改变。如果你不喜欢这种方式(这是默认的处理方式,除非复制的数据量过大),可以给构造函数传递copy=True 。