numpy之dot 函数
官方文档地址:(https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html#numpy.dot)
- 对于一维数组(两个数组的内积):
#数据类型为array
import numpy as np
d = np.arange(1,4)
array([1, 2, 3])
e = d[::-1]
array([3, 2, 1])
np.dot(d,e)
10
#数据类型也可以是list
import numpy as np
a = [1,2,3]
b = [3,2,1]
np.dot(a,b)
10
#列表list也能够完成相应计算,但是numpy的运行速度更快(用C写的),另外它对矢量的处理很好.
2.对于二维数组(矩阵运算):
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
np.dot(a,b)
array([[19, 22],
[43, 50]])
#附上计算方式:
[1,2] [5,6] 1*5+2*7 1*6+2*8 [19,22]
[3,4] [7,8] 3*5+4*7 3*6+4*8 [43,50]
3.对于一个ND阵列 和 一个MD阵列:
#dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
a = np.arange(3*4*5*6).reshape((3,4,5,6))
>>> b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))
>>> np.dot(a, b)[2,3,2,1,2,2]
499128
>>> sum(a[2,3,2,:] * b[1,2,:,2])
499128