购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 NumPy简介

大量金融数学建模是构建于矩阵运算基础之上的,这使得矩阵运算在金融建模领域具有极其重要的意义,在这一章将向大家介绍一个支持不同维度数组与矩阵运算的基础程序包——NumPy。在Python中,大多数科学计算的运算包都是以NumPy的数组作为基础的。

NumPy的前身为Jim Hugunin等在1995年创建的Numeric,此后又衍生出另外一个类似于Numeric的第三方库——NumArray。NumPy和NumArray在进行矩阵和数组运算时各有优势,但为了避免在矩阵运算时使用不同的第三方库导致的不兼容性,程序员Travis Oliphant在整合NumPy和NumArray特性的基础上,增加了一些新的矩阵运算功能,并于2006年推出第一版NumPy。

Jim Hugunin, Software programmer

Creator of the Python programming language

extension, Numeric(ancestor to NumPy)

NumPy是Numerical Python的缩写。NumPy有两种发音方法:['nʌmpaɪ]或者[ˈnʌmpi]。Nympy的普及得益于它很好地满足了高效数值运算的要求,而这是由于以下几个原因:①NumPy中矩阵的存储效率和输入输出性能远优于Python中对应的其他基本数据存储方式,如多层嵌套的列表。②实现NumPy功能的代码大部分是使用C语言编写的,且NumPy的底层算法是经过精心设计的。③在NumPy中通过直接操作矩阵可以避免在Python代码中使用过多的循环语句。

以下代码对比了分别使用Python的列表和NumPy创建一个行向量,并将行向量所有的元素都增大五倍的运算时间。在作者的电脑中,完成以下操作,Python列表需要花费5.67秒,而NumPy只需要0.13秒,NumPy的运行时间仅为列表操作时间的2.3%。

如前所述,作为一个Python基础库,NumPy的矩阵操作是诸多Python其他常用库(如pandas、SciPy和Matplotlib)的基础,因此本节将会重点介绍如何在NumPy中创建矩阵和使用矩阵的方法。在深入介绍NumPy如何进行矩阵运算前,先回顾矩阵的基本概念。如图3-1所示,线性代数中常用的对象包括一维的 行向量 (row vector)和 列向量 (column vector)、二维的 矩阵 (matrix)和三维的 元胞数组 (cell array)。在NumPy中,矩阵的维数又称为 (axis)。

图3-1 几种常见的矩阵数据形式

NumPy提供了一些常见数据类型的缩写,便于用户快速使用和定义变量的数据类型,具体见表3-1。

表3-1 占用空间固定的NumPy数据类型

如表3-2所示,NumPy提供了众多创建ndarray矩阵对象的函数,在接下来的两节中,将会详细介绍如何使用这些函数创建ndarray矩阵对象。

如表3-3展示了一些常用的矩阵对象操作函数,部分常用的重要的函数会在本章和第4章中介绍。

表3-2 常用的创建ndarray矩阵对象的函数

表3-3 常用的矩阵操作函数 cxX1zU7NbVrW13AhcvwwiFDxK2538TeP3DnFix131v5p236BEKAH5l4JlYLy1dmC

点击中间区域
呼出菜单
上一章
目录
下一章
×