如何在 python 中获取 2 个列向量的内积numpy
下面的代码不起作用
import numpy as np
x = np.array([[1], [2]])
np.inner(x, x)
它回来了
array([[1, 2],
[2, 4]])`
代替5
如何在 python 中获取 2 个列向量的内积numpy
下面的代码不起作用
import numpy as np
x = np.array([[1], [2]])
np.inner(x, x)
它回来了
array([[1, 2],
[2, 4]])`
代替5
一个维度为 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))
或者简单地将您的 x 定义为最初的行向量。
import numpy as np
x = np.array([1,2])
np.inner(x, x)
尝试以下它会工作
np.dot(np.transpose(a),a))
确保 col_vector 具有形状 (N,1) 其中 N 是元素的数量
然后简单地将一比一的乘法结果相加
np.sum(col_vector*col_vector)