繁体   English   中英

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

[英]Why array have different value than anticipated?

我将 class 的属性从:

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] 。

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

self.base数据类型更改为float

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

发生这种情况是因为您试图将浮点值分配给 integer 数组。 因此,需要使用浮点值来初始化self.base ,如下所示:

  1. 使用self.base = np.array([1.0, 0.0], [0.0, 1.0])
  2. self.base = np.array([[1, 0], [0, 1]], dtype=float)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM