【发布时间】:2018-09-14 11:30:55
【问题描述】:
例如,我有一个适用于一维向量的投影矩阵方程:
其中 P 是投影矩阵,T 是转置矩阵。
我们知道我们不能进一步简化这个分数(通过取消项),因为分母是一个点积(因此是 0 维标量,数字),分子是一个矩阵(列乘以行是一个矩阵)。
我不确定如何在 numpy 中为这个方程定义函数,考虑到我正在使用的当前函数不区分这些项,乘法被视为具有交换属性。我正在使用numpy.multiply 方法:
>>> import numpy as np
>>> a = np.array(a)
>>> a*a.T
array([1, 4, 9])
>>> a.T*a
array([1, 4, 9])
如你所见,它们都输出向量。
我也尝试过使用numpy.matmul 方法:
>>> np.matmul(a, a.T)
14
>>> np.matmul(a.T, a)
14
这为两个函数调用提供点积。
我也尝试过numpy.dot,但它显然不适用于分子项。
据我了解,第一个函数调用应该输出矩阵(因为列乘以行),第二个函数调用应该在适当的情况下输出一个标量。
我错了吗?有什么方法可以区分a乘以a转置和a转置乘以a?
谢谢!
【问题讨论】:
-
* 运算符不是点积
-
@talonmies 是的,哪个函数可以用来区分 a^Ta 和 aa^T?有没有“万能”乘法函数?谢谢!
-
@Chrispresso 也尝试了点积方法,但它不适用于分子中的术语。
标签: python numpy matrix linear-algebra