2列向量的块内积

tra*_*ang 2 python numpy vector inner-product

我怎样才能在Python的2列向量的内积 numpy

下面的代码不起作用

import numpy as np
x = np.array([[1], [2]])
np.inner(x, x)
Run Code Online (Sandbox Code Playgroud)

它回来了

array([[1, 2],
       [2, 4]])`
Run Code Online (Sandbox Code Playgroud)

代替 5

Taa*_*ako 7

一个尺寸为2x1(2行1列)的向量与另一个尺寸为2x1(2行1列)的向量的内积是一个矩阵,尺寸为2x2(2行2列)。当您获取任何张量的内积时,最里面的尺寸必须匹配(在这种情况下为1),结果是张量的尺寸与外面的尺寸匹配,即;2x1 * 1x2 = 2x2。

您要做的是对两者进行转置,以便在相乘时尺寸为1x2 * 2x1 = 1x1。

更一般而言,将任何带有维数NxM的东西乘以带有维数的东西MxK,会得到带有维数的东西NxK。注意内部尺寸都必须为M。有关更多信息,请查看矩阵乘法规则

np.inner函数将自动转置第二个参数,因此当您传入两个2x1时,您会得到一个2x2,但是如果传入两个1x2,则将得到一个1x1。

尝试这个:

import numpy as np
x = np.array([[1], [2]])
np.inner(np.transpose(x), np.transpose(x))
Run Code Online (Sandbox Code Playgroud)

或者只是将x最初定义为行向量。

import numpy as np
x = np.array([1,2])
np.inner(x, x)
Run Code Online (Sandbox Code Playgroud)