我正在努力提高对numpy函数的理解。我了解numpy.dot
的行为。我想了解numpy.outer
在numpy.dot
方面的行为。
根据维基百科的这篇文章https://en.wikipedia.org/wiki/Outer_product,我希望array_等于在下面的代码中返回True。但事实并非如此。
X = np.matrix([
[1,5],
[5,9],
[4,1]
])
r1 = np.outer(X,X)
r2 = np.dot(X, X.T)
np.array_equal(r1, r2)
如何分配r2使np.array_equal
返回True?另外,为什么numpy的np.outer
实现与Wikipedia上的外部乘法定义不匹配?
使用numpy 1.9.2
numpy.outer只适用于一维向量,不适用于矩阵。但是对于一维向量的情况,有一个关系。
如果
那么这个
应该和这个一样
另一个类似于
a[:,None] * a[None,:]
的(笨拙的)版本Wiki外部链接主要讨论向量、一维数组。你的
X
是二维的请注意,Wiki外部不涉及求和。在这个例子中,
5
是外部的3个对角线值的和。dot
还涉及求和-沿着特定轴求和之后的所有乘积。一些wiki外部方程式使用显式索引。
einsum
函数可以实现这些计算。如注释中所述,
np.outer
使用ravel
,例如这与我之前为
x
演示的广播乘法相同。相关问题 更多 >
编程相关推荐