3

我想制作一个 2x2 矩阵

T = [[A, B],
     [C, D]]

其中每个元素A,B,C,D都是一个数组(当然大小相同)。这可能吗?

我希望能够将这些矩阵相乘,例如将两个矩阵相乘T1并且T2应该给我

T1*T2 = [[A1*A2, B1*B2],
         [C1*C2, D1*D2]]

它仍然是相同大小的数组矩阵。有这样的乘法函数吗?

而且,如果我乘以标量数字T的普通标量矩阵t = [[a,b],[c,d]]a,b,c,d则乘法应该给我

t*T = [[a*A, b*B],
       [c*C, d*D]]

我怎样才能做到这一点?一个例子或相关材料的链接会很棒。

4

2 回答 2

2

您的第一个问题不是按您的预期工作吗?

In [1]: import numpy as np

In [2]: arr = np.arange(8).reshape(2, 2, 2)

In [3]: arr
Out[3]: 
array([[[0, 1],
        [2, 3]],

       [[4, 5],
        [6, 7]]])

In [4]: arr*arr
Out[4]: 
array([[[ 0,  1],
        [ 4,  9]],

       [[16, 25],
        [36, 49]]])

至于你的第二个问题,只需将其重塑为 3 维数组:

In [5]: arr2 = np.arange(4).reshape(2, 2)

In [6]: arr2
Out[6]: 
array([[0, 1],
       [2, 3]])

In [7]: arr2 = arr2.reshape(2, 2, 1)

In [8]: arr2
Out[8]: 
array([[[0],
        [1]],

       [[2],
        [3]]])

In [9]: arr*arr2
Out[9]: 
array([[[ 0,  0],
        [ 2,  3]],

       [[ 8, 10],
        [18, 21]]])
于 2013-03-20T06:40:45.280 回答
0
>>> from numpy import array, matrix, multiply
>>> A = array([1, 2, 3])
>>> 
>>> B = array([2, 3, 4])
>>> 
>>> C = array([4, 5, 6])
>>> 
>>> D = array([7, 8, 9])
>>> 
>>> T1 = matrix([A, B, C, D])
>>> T1
matrix([[1, 2, 3],
        [2, 3, 4],
        [4, 5, 6],
        [7, 8, 9]])
>>> T2 = T1 * 100
>>> T2
matrix([[100, 200, 300],
        [200, 300, 400],
        [400, 500, 600],
        [700, 800, 900]])
>>> 
>>> multiply(T1, T2)
matrix([[ 100,  400,  900],
        [ 400,  900, 1600],
        [1600, 2500, 3600],
        [4900, 6400, 8100]])
>>> 
于 2013-03-20T06:56:22.587 回答