我对我意外使用两个 numpy 矩阵执行的操作的结果有疑问(后来修复)。
假设我有一个列向量 A = [1,2,3] 和一个行向量 B = [1,1,1]。据我所知,没有正确的数学方法来“减去”这两个向量,即这应该是一个未定义的操作。然而,当我这样做时,我得到了:
>>> matrix([[0, 1, 2],
[0, 1, 2],
[0, 1, 2]])
我认为这可能是某种广播操作,但这仍然让我有点困扰。 numpy.matrix 对象不应该只包含数学上有效的矩阵运算吗?
任何帮助表示赞赏!
Thanks!
A 和 B 一起广播:
A = np.matrix([[1],[2],[3]])
#a 3x1 vector
#1
#2
#3
B = np.matrix([[1,1,1]])
#a 1x3 vector
#1 1 1
A-B
#a 3x3 vector
#0 0 0
#1 1 1
#2 2 2
A 沿其大小 1 维(列)广播到
#1 1 1
#2 2 2
#3 3 3
B 沿其大小 1 维(行)广播到
#1 1 1
#1 1 1
#1 1 1
然后像往常一样计算两个 3x3 矩阵的 A-B。
如果您想知道为什么它会这样做而不是报告错误,那是因为 np.matrix 继承自 np.array。 np.matrix 覆盖乘法,但不覆盖加法和减法,因此它使用基于 np.array 的运算,当维度允许时进行广播。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)