ast*_*max 9 python numpy matrix
我有一个关于我用两个numpy矩阵意外执行的操作结果的问题(后来修复了).
假设我有一个列向量,A = [1,2,3],行向量B = [1,1,1].据我所知,没有正确的数学方法来"减去"这两个向量,即这应该是一个未定义的操作.但是,当我这样做时,我会回来:
>>> matrix([[0, 1, 2],
[0, 1, 2],
[0, 1, 2]])
Run Code Online (Sandbox Code Playgroud)
我认为这可能是某种广播操作,但这仍然让我感到麻烦.numpy.matrix对象不应只包含数学上有效的矩阵运算吗?
任何帮助表示赞赏!
谢谢!
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
Run Code Online (Sandbox Code Playgroud)
A 沿其大小 1 维(列)广播到
#1 1 1
#2 2 2
#3 3 3
Run Code Online (Sandbox Code Playgroud)
B 沿其大小 1 维(行)广播到
#1 1 1
#1 1 1
#1 1 1
Run Code Online (Sandbox Code Playgroud)
然后像往常一样计算两个 3x3 矩阵的 AB。
如果您想知道为什么它会这样做而不是报告错误,那是因为 np.matrix 继承自 np.array。np.matrix 覆盖乘法,但不覆盖加法和减法,因此它使用基于 np.array 的运算,当维度允许时进行广播。