NumPy 提供了两个基本的对象:一个多维数组(ndarray)对象和一个通用函数(ufunc)对象,其他对象都是在它们的基础上构建的。在 NumPy 中还包含两种基本的数据类型,即数组和矩阵。
NumPy 中的矩阵对象为 matrix,它包含有矩阵的数据处理、矩阵计算、转置、可逆性等功能。matrix 是 ndarray 的子类,矩阵对象是继承自 NumPy 数组对象的二维数组对象,因此,矩阵会含有数组的所有数据属性和方法。
但是,矩阵与数组还有一些重要的区别。
1) 矩阵对象可以使用一个 MATLAB 风格的字符串来创建,也就是一个以空格分隔列,以分号分隔行的字符串。
2) 矩阵是维数为2的特殊数组。矩阵的维数是固定的,即便是加减乘除各种运算,矩阵的维数不会发生变化,而数组在运算时其维数会发生变化。总之,矩阵的维数永远是二维的。
3) 矩阵与数组之间的转化,数组转矩阵用 numpy.asmatrix 或者 numpy.matrix,矩阵转数组用 numpy.asarray 或者 matrix 的 A 属性。
4) 数组中的很多通用函数(ufunc)运算都是元素级的,即函数是针对数组中的每个元素进行处理的,而矩阵是根据矩阵的定义进行整体处理的。
5) 矩阵默认的__array_priority__是 10.0,因而数组与矩阵对象混合的运算总是返回矩阵。
6) 矩阵有几个特有的属性使计算更加容易,这些属性如下:
.T:返回自身的转置;
.H:返回自身的共轭转置;
.I:返回自身的逆矩阵;
.A:返回自身数