在我的应用程序中,携带矩阵的矩阵很有意义。因为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