第2章 NumPy数组

在前面我们已经尝试了一个基于SciPy栈中的基础数据分析程序库的实际代码。在本章中,我们将带领大家一起学习NumPy数组,熟悉NumPy数组的基础知识。阅读本章后,你会对NumPy数组及其相关函数有基本了解。

本章涉及的主题如下。

  • NumPy数组对象
  • 创建多维数组
  • 选择NumPy数组元素
  • NumPy数值类型
  • 一维切片和索引
  • 改变阵列形状
  • 创建阵列视图和副本
  • 花式索引
  • 使用位置列表进行索引
  • 用布尔值索引NumPy数组
  • NumPy数组的广播技术

你可以在Jupyter Notebook中打开ch-02.ipynb文件,按照本章中的示例进行操作,此外也可以新建一个notebook,手动输入相应的代码。

NumPy提供了一个名为ndarray的多维数组对象。NumPy数组是具有固定大小的类型化数组。Python的列表是异构的,因此列表的元素可以包含任何对象类型,而NumPy数组是同质的,只能存放同一种类型的对象。数组由两部分组成,分别如下。

  • 存储在连续的内存块中的实际数据
  • 描述实际数据的元数据

实际数据存储在连续的内存块中,因此当大型数据集作为ndarray进行加载时,我们就要看有没有足够多的连续内存块了。NumPy中的大部分数组方法和函数都不会直接修改实际数据,而只能修改元数据。

在之前的章节中,我们曾经用arange()函数来生成数组。实际上,那是用来存放一组数值的一维数组,这里的ndarray则可以具有一个以上的维度。

NumPy数组通常是同质的(有一种特殊的记录数组类型,它可以是异质的),即数组中的数据项的类型必须一致。NumPy数组元素类型一致的好处是:因为知道数组元素的类型相同,所以能轻松确定存储数组所需空间的大小。同时,NumPy数组还能够运用向量化运算来处理整个数组;而完成同样的任务,Python的列表则通常需要借助循环语句遍历列表并对逐个元素进行相应的处理。NumPy数组的索引方法与Python类似,下标从0开始。此外,NumPy使用了优化过的C ...

Get Python数据分析(第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.