python的numpy库的dot(a,b)函数,计算两个数组的点积。

用法

 numpy.dot(a, b, out=None)

描述

numpy.dot(a,b),计算数组a和b的点积。

入参

a和b:numpy.dot(a,b)的入参a,b为必选入参;

如果a和b是一维数组,则得到的是两数组的内积。

如果a和b是二维数组,则得到的是两数组的乘积。

1.1 一维数组的内积

numpy.dot(a,b),如果a,b为一维数组,则返回数组的内积,即数组a和b的相同索引元素相乘后的和,得到的是一个标量而不是数组。并且a和b的大小(元素个数)必须相等。

复数乘法:(a+bj)(c+dj)=(ac-bd)+(ad+bc)j,已知jj=-1。

 >>> import numpy as np
 # dot(a,b)若a,b一维数组
 # 则返回a和b的内积
 >>> ar1=np.arange(1,6)
 >>> ar2=np.arange(6,11)
 >>> ar1
 array([1, 2, 3, 4, 5])
 >>> ar2
 array([ 6,  7,  8,  9, 10])
 # 一维数组内积:两个数组元素分别相乘后求和
 >>> np.dot(ar1,ar2)
 130
 >>> np.sum(ar1*ar2)
 130
 >>> ar3=np.arange(6,10)
 >>> ar3
 array([6, 7, 8, 9])
 # 一维数组a和b的元素个数必须相等
 >>> np.dot(ar1,ar3)
 Traceback (most recent call last):
   File "", line 1, in <module>
     np.dot(ar1,ar3)
 ValueError: shapes (5,) and (4,) not aligned: 5 (dim 0) != 4 (dim 0)

1.2 二维数组的乘积

numpy.dot(a,b),如果a和b为二维数组,则计算二维数组对应的矩阵积。

矩阵积即两个矩阵相乘,需满足下面条件:

(1) 尺寸匹配:对于矩阵A和B,A的列数必须与B的行数相等,才能进行乘法运算。例如,若矩阵A是一个m×n的矩阵,那么矩阵B必须是一个n×p的矩阵,结果矩阵C的大小是m×p。

(2) 乘法规则:矩阵乘积C中的每个元素c_ij是通过取矩阵A的第i行与矩阵B的第j列对应元素的乘积之和来计算。即,c_ij=a_i1b_1j+a_i2b_2j+…+a_in*b_nj。

(3) 不满足交换律:AB≠BA,除非A或B为单位矩阵。

 >>> import numpy as np
 # c=dot(a,b)若a,b为二维数组,则计算a和b的矩阵积
 # c_ij=a的i行元素与b的j列元素相乘后求和
 >>> ar1=np.arange(1,7).reshape(2,3)
 >>> ar2=np.arange(2,11).reshape(3,3)
 >>> ar1
 array([[1, 2, 3],
        [4, 5, 6]])
 >>> ar2
 array([[ 2,  3,  4],
        [ 5,  6,  7],
        [ 8,  9, 10]])
 >>> np.dot(ar1,ar2)
 array([[ 36,  42,  48],
        [ 81,  96, 111]])
 # c00=36=ar1的0行*ar2的0列,再求和
 >>> np.sum(ar1[0]*ar2[:,0].reshape(3,))
 36
 # a的列数必须与b的行数相等
 >>> np.dot(ar2,ar1)
 Traceback (most recent call last):
   File "", line 1, in <module>
     np.dot(ar2,ar1)
 ValueError: shapes (3,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注