2列向量的Numpy内积

Numpy inner product of 2 column vectors

如何对 python 的 numpy

中的 2 个列向量进行内积

以下代码无效

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。更多,review your matrix multiplication rules

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)

我想你的意思是:

x= np.array([1,2])

为了得到 5 作为输出,如果你想在上面应用 np.inner,你的矢量需要是 1xN 而不是 Nx1

尝试下面的方法会有用

np.dot(np.transpose(a),a))

确保 col_vector 具有形状 (N,1),其中 N 是元素的数量

然后简单地将乘法结果一一相加

np.sum(col_vector*col_vector)