/ / Як зробити матрицю масивів в номері? - python, масиви, матриця, numpy

Як зробити матрицю масивів в числах? - python, масиви, матриця, 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*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]])
>>>