如何在python的numpy
以下代码不起作用
import numpy as np
x = np.array([[1], [2]])
np.inner(x, x)
它返回了
array([[1, 2],
[2, 4]])`
而不是5
答案 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)
答案 2 :(得分:0)
尝试以下方法
np.dot(np.transpose(a),a))
答案 3 :(得分:0)
确保col_vector的形状为(N,1),其中N是元素数
然后简单地将一对乘结果相加
StackPanel