numpy矩阵__iadd__“ + =”复制结果

时间:2019-01-27 06:23:38

标签: python numpy matrix

使用+ =运算符添加两个矩阵时,我注意到了一个奇怪的现象。
我正在使用numpy版本1.10.1。
Python版本'3.5.4 | Anaconda自定义(64位)| (默认值,2017年8月14日,13:41:13)[MSC v.1900 64位(AMD64)]'

import numpy as np
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[3, 2, 1], [9, 8, 7], [6, 5, 4]]
c = [[3, 8, 7], [5, 4, 2], [6, 1, 9]]

summatrix = []
matrixtemp = np.matrix(a)
for i in (b, c):
    matrixtemp = matrixtemp + np.matrix(i)
    summatrix.append(matrixtemp)

print(summatrix)

结果符合预期:

[matrix([[ 4,  4,  4],
        [13, 13, 13],
        [13, 13, 13]]),
 matrix([[ 7, 12, 11],
        [18, 17, 15],
        [19, 14, 22]])]

但是当我执行以下操作时:

import numpy as np
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[3, 2, 1], [9, 8, 7], [6, 5, 4]]
c = [[3, 8, 7], [5, 4, 2], [6, 1, 9]]

summatrix = []
matrixtemp = np.matrix(a)
for i in (b, c):
    matrixtemp += np.matrix(i)
    summatrix.append(matrixtemp)

print(summatrix)

我得到:

[matrix([[ 7, 12, 11],
        [18, 17, 15],
        [19, 14, 22]]),
 matrix([[ 7, 12, 11],
        [18, 17, 15],
        [19, 14, 22]])]

这是一个简单的修复程序,但只是想知道为什么会发生这种情况?

0 个答案:

没有答案