python-为什么数组的值与预期的不同?

我从以下方式更改了类的属性:

self.firstBase = np.array([1, 0])
self.secondBase = np.array([0, 1])

self.base = np.array([[1, 0], [0, 1]])

从那时起,将这两个向量与Hadamard矩阵相乘的操作将返回错误的值。

def H(self):
    H = np.array([[1 / math.sqrt(2), 1 / math.sqrt(2)],
                  [1 / math.sqrt(2), - 1 / math.sqrt(2)]])

    topValue = H[0][0] * self.base[0][0] + H[0][1] * self.base[0][1]
    bottomValue = H[1][0] * self.base[0][0] + H[1][1] * self.base[0][1]
    self.base[0] = np.array([topValue, bottomValue])

    topValue = H[0][0] * self.base[1][0] + H[0][1] * self.base[1][1]
    bottomValue = H[1][0] * self.base[1][0] + H[1][1] * self.base[1][1]
    self.base[1] = np.array([topValue, bottomValue])

    return self

我做了一些测试,发现计算仍然正确,但是当我初始化时

 self.base[0] = np.array([topValue, bottomValue])

self.base[1] = np.array([topValue, bottomValue])

结果是我得到[0,0]和[0,0]。

这是为什么?解决方法是什么?

评论