在我的應用程序中,攜帶矩陣的矩陣很有意義。因爲numpy不喜歡它,並且因爲使用數組大部分時間更輕,所以我最終得到了數組數組。我對他們很滿意。將陣列數組轉換爲矩陣
它看起來像:
[ [S11hh S11hv] [S12hh S12hv] ]
[ [S11vh S11vv] [S12vh S12vv] ]
S = [ ]
[ [S21hh S21hv] [S22hh S22hv] ]
[ [S21vh S21vv] [S22vh S22vv] ]
(這是在水平和垂直極化的反射和透射係數,它的光學)
然而,在我的代碼某個時候,我需要做使用所有S的矩陣乘法,而不是僅顯示部分:
M = S.dot(L)
其中L是這樣的:
[ [L1hh L1hv] ]
[ [L1vh L1vv] ]
L = [ ]
[ [L2hh L2hv] ]
[ [L2vh L2vv] ]
如果我天真地運行
M = S.dot(L)
我結束了在6個維度是不是我想要的東西。其實我希望得到的結果是完全同樣會發生什麼,如果我的數組的數組只是矩陣:
[ S11hh S11hv S12hh S12hv ]
[ S11vh S11vv S12vh S12vv ]
S = [ S21hh S21hv S22hh S22hv ]
[ S21vh S21vv S22vh S22vv ]
[ L1hh L1hv ]
[ L1vh L1vv ]
L = [ L2hh L2hv ]
[ L2vh L2vv ]
然後我會重新組元素4由4
什麼是優雅numpyic從這些數組中製作矩陣的方法?我嘗試過bmat,但bmat對我所擁有的不滿意;它適用於矩陣列表的列表,但不適用於4D陣列,出於某種原因。
這就是我第一次編寫代碼的方式,一旦意識到它迫使我切片並轉移到所有位置,我就走開了。只有在一個地方,我確實需要一個矩陣。正如我所說的,bmat並不適合這項任務。 – Niriel