3.6 矩阵运算

2017-03-19  本文已影响0人  操作系统

3.6.1 矩阵运算规则

矩阵的加减法运算规则与数组相同,即元素运算,其结果返回新的矩阵。倍乘数运算也是矩阵内元素乘以倍数,返回新的矩阵,且倍数应置于运算符左边。
矩阵乘法运算规则是,只有当乘法运算符左边矩阵的列数等于右边矩阵的行数时,两个矩阵才能进行乘法运算,即mn矩阵与np矩阵满足相乘条件,且位置不能互换。具体步骤是,左矩阵第一行乘以右矩阵第一列分别相乘,第一个数乘第一个数,乘完之后相加,即为结果的第一行第一列的数,依次往下运算 。

3.6.2 matrix对象

NumPy和Matlab不一样,对于多维数组的运算,缺省情况下并不使用矩阵运算,可以调用相应的函数对数组进行矩阵运算。NumPy库提供了matrix类,使用matrix类创建矩阵对象,它们的加减乘除运算缺省采用矩阵方式计算。示例代码:

>>>m1 = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])        #直接生成矩阵对象
>>>m1
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
>>>a = np.arange(9).reshape((3, 3))
>>>m2 = np.matrix(a)        #将数组转换成矩阵
>>>m2
matrix([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])
>>>m1 + m2        #矩阵加法即元素相加,与数组运算一样
matrix([[ 1,  3,  5],
        [ 7,  9, 11],
        [13, 15, 17]])
>>>m3 = m1*m2        #矩阵乘法
>>>m3
matrix([[ 24,  30,  36],
        [ 51,  66,  81],
        [ 78, 102, 126]])
>>>type(m3)
numpy.matrixlib.defmatrix.matrix

3.6.3 数组的点积

ufunc提供的dot()函数计算两个数组的点积,其满足矩阵乘法运算规则,它返回的是一个标量(只有大小没有方向的一个值)。示例代码:

>>>a1 = np.arange(1, 10).reshape((3, 3))
>>>a1
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>>a2 = np.arange(9).reshape((3, 3))
>>>a2
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>>a3 = a1.dot(a2)
>>>a3
array([[ 24,  30,  36],
       [ 51,  66,  81],
       [ 78, 102, 126]])
>>>type(a3)
numpy.ndarray
>>>a4 = np.dot(a1, a2)          #点积运算的另一种形式,等价于a1.dot(a2)
>>>a4
array([[ 24,  30,  36],
       [ 51,  66,  81],
       [ 78, 102, 126]])

以上两个示例显示,数组点积的运算规则与矩阵乘法相同,不过点积返回的对象a3是ndarray类型,矩阵乘法返回的对象m3是matrix类型。

上一篇 下一篇

猜你喜欢

热点阅读