【问题标题】:Python is there an easier way to define multiple zeroed matrices?Python 有没有更简单的方法来定义多个归零矩阵?
【发布时间】:2013-10-05 00:35:20
【问题描述】:

我目前正在定义两个矩阵

A, B = matrix(zeros(shape =(3,3), dtype=complex)), matrix(zeros(shape =(3,3), dtype=complex))

我想使用类似的东西

A, B = 2*(matrix(zeros(shape =(3,3), dtype=complex)),)

但是,在第二种情况下,对 A 所做的任何更改现在也会更改 B。

我希望能够在一行上制作多个这种类型的矩阵,而不使用第一种方法,因为它太长了,有没有办法做到这一点?

【问题讨论】:

    标签: python matrix variable-assignment


    【解决方案1】:

    这个怎么样:

    A, B = [matrix(zeros(shape=(3,3), dtype=complex)) for _ in range(2)]
    

    您第一次尝试失败的原因是您将相同的数组分配给 A 和 B。为什么?好吧,(matrix(zeros(shape =(3,3), dtype=complex)),) 是一个矩阵的元组。加倍它会给你一个相同矩阵的元组两次。然后你把它解压成两个变量,最终指向同一个矩阵。

    这里没有什么特定于 numpy 数组的;它发生在普通的旧 Python 列表,甚至 int 上(尽管在这种情况下你不在乎——与数组和列表不同,int 是不可变的,所以有两个对相同数字的引用 5 就像有两个独立的一样好)号码5s 将是)。

    这让足够多的新手感到困惑,以至于有一个FAQ question 来解释它。

    无论如何,使用推导式可以重复计算同一个表达式。当然,通常您使用循环变量,每次都用不同的值对其进行评估,但这不是必需的。在这种情况下,我们希望两个矩阵都以相同的方式构造,所以我只是将循环变量扔到_ 中并忽略它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多