2014-10-02 3 views
-2

Я хочу, чтобы создать матрицу 2х2Матрица создания массива в NumPy

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

, где каждый элемент A, B, C, D представляет собой массив.

Возможно ли это?

Я хотел бы быть в состоянии умножить эти матрицы, например матрицы умножения двух Т1 и Т2 должен дать мне

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

Начните с 'T = np.array ([[A, B], [C, D]]) и попробуйте. – grc

+0

Все ли подматрицы одинакового размера? Если да, экспериментируйте с 4d-массивами. – hpaulj

ответ

1

Использование ndarray/array в numpy пришло на ум. http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html

Что-то вроде:

import numpy as np 
A = np.ndarray(shape=(2,2), dtype=float, order='F') 
B = np.ndarray(shape=(2,2), dtype=float, order='F') 
C = np.ndarray(shape=(2,2), dtype=float, order='F') 
D = np.ndarray(shape=(2,2), dtype=float, order='F') 

T = np.array([[A,B],[C,D]]) 

Для вашей работы вы, возможно, придется написать свои собственные функции.

Смежные вопросы