-2

我对 Python Numpy 上的矩阵运算感到困惑。似乎点和外部操作不像我在线性代数课上学到的那样。

import numpy
n = numpy.arange(-5, 6)
w = numpy.arange(-20, 21)
n.shape
w.shape
outer = numpy.outer(w, n)
outer.shape
dot = numpy.dot(n, outer.transpose())
dot.shape

这里 n 是 (11, 1) 矩阵,w 是 (41, 1) 矩阵。我认为 w 和 n 的大小不匹配。((41, 1) outer(11, 1))

同样,我认为这个点很奇怪。n 是 (11, 1) 矩阵,outer.transpose() 是 (11, 41) 矩阵。我认为尺寸也不匹配。

4

1 回答 1

2

根据文档http://docs.scipy.org/doc/numpy/reference/generated/numpy.outer.htmlouter两个行向量的函数A(1xn)B(1xm)是一个矩阵M(nxm)- 并且转置将是维度的mxn。这正是您所看到的。

因此,在文档中再次描述了向量和矩阵的点积:http: //docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html#numpy.dot - 它本质上是描述为行向量(第一个参数)与第二个参数(矩阵)的转置的矩阵乘法。

当我打印出您的代码创建的各种对象的形状时,我得到:

n.shape:     (11,)
w.shape:     (41,)
outer.shape: (41, 11)h
dot.shape:   (41,)

这与上述完全一致。你的困惑是什么?什么结果不是你所期望的?

于 2013-10-09T03:56:15.743 回答