Я хочу зробити матрицю 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]]
Як це зробити? Приклад або посилання на пов'язаний матеріал буде чудовим.
Відповіді:
2 для відповіді № 1Чи не ваше перше питання просто працювати, як можна було б очікувати?
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]]])
0 для відповіді № 2
>>> 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]])
>>>