难以理解Python中的矩阵运算

时间:2019-03-10 19:40:54

标签: python numpy matrix

从对随机创建的4×4二进制矩阵的初始猜测开始,编写一个代码段,该代码段可进行100多次迭代:

  1. 选择矩阵的随机元素,并创建一个新矩阵,该矩阵等于旧矩阵,其中一个随机选择的数字翻转(从0到1,反之亦然);
  2. 如果新矩阵的目标值小于旧矩阵的目标值,请替换为新矩阵,否则保留在当前矩阵上。

打印最终的4×4矩阵以及在100次迭代结束时找到的行列式的值。

import numpy as np
MOld = np.random.randint(2, size=[4,4])
for j in range(100): #for loop over 100 iterations
    MNew = np.array(MOld) #new matrix equal to old matrix
    i,j = np.random.randint(4), np.random.randint(4) #choosing random elements of the matrix.
    MNew[i,j] = 1 - MNew[i,j] #do not understand this
    if f(MNew) < f(MOld): #if new matrix < old matrix
        MOld = MNew #replacing value

print(MOld) #printing original 4x4 matrix
print(f(MOld)) #printing determinant value

我正在努力提高我对这段代码的理解,如果有人可以在#号标签之后检查我的评论,我将不胜感激。

特别是我对这一步不了解:

MNew [i,j] = 1-MNew [i,j]

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

步骤:

如果MNew [i,j]为1,则MNew [i,j]现在为1-1 =0。
如果MNew [i,j]为0,则Mnew [i,j]现在为1-0 = 1

所以您看到这是一种从上一次迭代中翻转值的方法。