Python编程基础与科学计算
上QQ阅读APP看书,第一时间看更新

5.1.1 数组的基本概念

在各种科学计算中,如有限元结构计算、振动计算、声学计算、流体计算、电磁计算等,都是将复杂的连续系统离散成有限自由度的系统,以向量和矩阵存储离散系统中的数据,并通过矩阵的多次迭代来求解所研究系统的微分方程。NumPy的主要目的是创建数组并对数组进行运算,方便进行科学计算。NumPy的基础是数组(array),数组是在内存中按照一定排列顺序存储的同类型数据的集合。NumPy中的数组是继承自n维数组ndarray (n-dimension array)类的实例对象。与Python的列表、元素不同的是,数组中元素都是同一种类型,即使类型不同也会强制转换成同一种类型。数据元素的类型就是数组的类型,每个元素在内存中都有相同大小的存储空间。

图5-1 整型二维数组

根据数组存储数据的深度,数组的维数分为零维、一维、二维、三维或更高维。零维数组是只有一个元素的标量数据,一维数组可以理解成线性代数中的向量,二维数组可以理解成线性代数中的矩阵。数组的维数称为坐标轴,如图5-1所示是按行存储的二维数组,轴axis=0(第1个轴)在竖直方向上是第1维数据,轴axis=1(第2个轴)在水平方向上是第2维数据,该二维数组在轴axis=0上有三个数据,在轴axis=1上有四个数据,这个二维数组的形状是(3,4),由于数据都是整数,所以数组的类型是整数类型。这个数组在轴axis=0上的最大值是数组[9 10 11 12],在轴axis=1上的最大值是数组[4 8 12]。

下面的代码用NumPy的array()方法定义了多个不同维数的数组,并通过数组的ndim属性、shape属性、size属性和dtype属性可以分别输出数组的维数、形状、元素个数和类型。数组的形状表示每维上元素的个数,数组的形状用元组来表示,例如(2,5)表示第1个轴有2个元素,第2个轴有5个元素。可以看出,由于列表a中的元素都是整数,所以用a创建的数组的类型是int;而列表b中有一个浮点数,所以用b创建的数组中的元素类型都变成了浮点数,数组的类型是float64。