Numpy 矩阵减法混乱

2023-12-31

我对我意外使用两个 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(使用前将#替换为@)

Numpy 矩阵减法混乱 的相关文章

随机推荐