Python 如何在numpy中生成阵列矩阵?
我想做一个2x2矩阵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
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]])
>>>