三、函数库
5. 内积、外积、张量积
-
numpy.dot(a, b, out=None)
:计算矩阵的乘积。对于一维数组,他计算的是内积;对于二维数组,他计算的是线性代数中的矩阵乘法。 -
numpy.vdot(a, b)
:返回一维向量之间的点积。如果a
和b
是多维数组,则展平成一维再点积。 -
numpy.inner(a, b)
:计算矩阵的内积。对于一维数组,它计算的是向量点积;对于多维数组,则它计算的是:每个数组最后轴作为向量,由此产生的内积。 -
numpy.outer(a, b, out=None)
:计算矩阵的外积。它始终接收一维数组。如果是多维数组,则展平成一维数组。
numpy.tensordot(a, b, axes=2)
:计算张量乘积。
axes
如果是个二元序列,则第一个元素表示a
中的轴;第二个元素表示b
中的轴。将这两个轴上元素相乘之后求和。其他轴不变。
说明:根据 jupyter lab 测试,以上“ 将这两个轴上元素相乘之后求和”并不正确,并不是两个轴上元素相乘求和,而是整个数组在本轴方向上的切片做为一个元素,再参与运算,比如在0轴方向上的切片就是 数组在0轴方向的切片,就是每一列,1轴方向的切片就是 每一行,也就是与1轴平行的行。
axes
如果是个整数,则表示把a
中的后axes
个轴和b
中的前axes
个轴进行乘积之后求和。其他轴不变。
说明:根据上述说明,[74] 行 不是线性代数的矩阵乘法,矩阵乘法应该是 axes = [1,0]。
叉乘:numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None)
:计算两个向量之间的叉乘。叉积用于判断两个三维空间的向量是否垂直。要求a
和b
都是二维向量或者三维向量,否则抛出异常。(当然他们也可以是二维向量的数组,或者三维向量的数组,此时一一叉乘)