Numpy 2列向量的内积

时间:2017-06-30 15:49:03

标签: python numpy vector inner-product

如何在python的numpy

中获取2列向量的内积

以下代码不起作用

import numpy as np
x = np.array([[1], [2]])
np.inner(x, x)

它返回了

array([[1, 2],
       [2, 4]])`

而不是5

4 个答案:

答案 0 :(得分:4)

尺寸为2x1(2行,1列)且另一个尺寸为2x1(2行,1列)的矢量的矢量的内积是尺寸为2x2(2行,2列)的矩阵。当你取任何张量的内积时,最内层的尺寸必须匹配(在这种情况下为1),结果是尺寸与外伸尺寸匹配的张量,即; a 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)

答案 1 :(得分:0)

我认为你的意思是:

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

为了得到5作为输出,如果要在其上应用np.inner,则向量需要为1xN而不是Nx1

答案 2 :(得分:0)

尝试以下方法

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

答案 3 :(得分:0)

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

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

StackPanel