2013-10-05 87 views
0

我目前定義兩個矩陣與Python有沒有更簡單的方法來定義多個歸零矩陣?

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)),) 

然而,在第二種情況下,以一個所做的任何更改現在變爲乙太。

我希望能夠在單行上創建多個這種類型的矩陣,而不使用第一種方法,因爲它太長了,有沒有辦法做到這一點?

回答

0

如何:

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

你的第一次嘗試沒有成功的原因是,你分配在同一個陣列A和B.爲什麼呢?那麼,(matrix(zeros(shape =(3,3), dtype=complex)),)是一個矩陣的元組。加倍會爲您提供兩次相同矩陣的元組。然後你把它解壓縮成兩個變量,最後引用相同的矩陣。

這裏沒有什麼特別的numpy數組;它發生在普通的舊Python列表中,甚至是整數(儘管在這種情況下,你並不在意) - 與數組和列表不同,整數是不可變的,所以有兩個引用相同的數字5就好像有兩個單獨的數字5會是)。

這讓很多新手感到困惑,有一個FAQ question來解釋它。

無論如何,使用理解允許您重複評估相同的表達式。當然,您通常使用循環變量,每次使用不同的值對其進行評估,但這不是必需的。在這種情況下,我們希望兩個矩陣的構造方式相同,所以我只是將循環變量扔到_並忽略它。

相關問題