【每天几分钟,从零入门python编程的世界!】
●numpy中的对位相乘
我们之前学习的numpy中的相乘有两种方法:
①直接用*号对两个数组进行相乘。
②用numpy.multiply(x,y)方法对两个数组相乘。
以上两种相乘的方法叫做element wise,即对位相乘。假如有x和y两个数组,则数组x中的第一个元素和数组y中的第一个元素相乘,数组x中的第二个元素和数组y中的第二个元素相乘,...,数组x中的第n个元素和数组y中的第n个元素相乘,形成新的数组。
两个数组中每一个对应位置上的元素逐一进行相乘,这叫做element wise。
比如
x = [1 2]
y = [3 4]
x*y = [3 8]
这就是element wise。
●numpy中的点乘的余弦定理推导
今天我们学习另外一种相乘numpy.dot,叫点乘。
点乘这种相乘,在金融和物理的一些运算中经常会用到。所以在这里稍微简单介绍下点乘,把它的图形意义推导一下,为后面对它的运用打好基础。
对位相乘是对两个数组的对位元素一一相乘、
numpy中的点乘,如果两个数组是一维数组,那么点乘的值就是向量的内积,如果是二维或二维以上的数组,点乘是另外的计算方法,在此先不做介绍。下面我们简单从图形的意义介绍下一维数组的点乘。
对于两个一维数组的点乘,就相当于是空间的向量的内积。
在numpy中的一维数组,我们可以把它看成是一个向量。
对于两个向量相乘,比如向量a和向量b相乘,a.b,英文是inner product,即内积。
假设现在有2个向量a和b,a向量和b向量之间的夹角是cosθ。
根据图示,向量c就等于向量a减b,即c = a - b。 ①式
又根据余弦定理:c² = a² + b² - 2|a||b|cosθ ②式
把①式代入②式,
即(a-b)² = a² + b² - 2|a||b|cosθ
a² + b² -2ab = a² + b² - 2|a||b|cosθ
ab = |a||b|cosθ
cosθ = ab/|a||b|
θ = arccos(ab/|a||b|)
我们既然是计算a向量和b向量的乘积,a和b的值我们肯定是知道的,然后我们根据a和b相乘的结果,结果如果是0,根据ab = |a||b|cosθ,就可以知道,a和b的夹角θ是90度。
如果相乘的结果不是0,还可以根据θ = arccos(ab/|a||b|)计算出a和b的夹角是多少度。
这就是numpy中数组的点乘,点乘的值相当于向量的内积。
●numpy中一维数组点乘的空间意义
如上图所示,把b向量投影在a向量的方向上,投影值就是b的绝对值乘以cosθ,即|b|cosθ,因为a.b在空间上就是同一方向的两个向量的绝对值的乘积,
所以a.b = |a||b|cosθ
由于numpy中的一维数组的点乘,可以看做是向量的内积,所以一维数组的点乘可以跟向量相乘的空间表示对应起来,这就是点乘的空间意义。
对于这节的内容,了解一下numpy中的一维数组的点乘是怎么计算的,以及向量在空间上如何表示、如何计算就可以了,关于向量的知识如果想深入研究一下,可以看看相关的书或者网上查查资料。对numpy中的点乘和向量的内积有一点了解之后,在后面的numpy更深入的学习中,如果提到这两个东西,就不会很迷惑。
向量的图是用纸笔画的,图画的有点丑,将就着看看吧,能理解就行。
我是时问新,欢迎关注我。跟我一起从零开始学习Python,每天花一点时间,开启python编程新世界的大门,领略新的风光,让人生多一种可能!