Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在numpy中生成阵列矩阵?_Python_Arrays_Matrix_Numpy - Fatal编程技术网

Python 如何在numpy中生成阵列矩阵?

Python 如何在numpy中生成阵列矩阵?,python,arrays,matrix,numpy,Python,Arrays,Matrix,Numpy,我想做一个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

我想做一个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]]

我该怎么做?一个例子或相关材料的链接就很好了。

你的第一个问题不是如你所期望的那样有效吗

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

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

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

谢谢这太棒了。我认为我对第一部分的错误是我应该使用
数组
函数来构造矩阵,而不是
矩阵
函数。第二部分工作完美,正是我想要的。
>>> 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]])
>>>