2016-07-18 4 views
1

Я новичок в python. Я пытаюсь объединить несколько матриц в новую матрицу. Например: -Объединение 2-мерных матриц в numpy

A = np.matrix([1, 2, 3], [5, 6, 7], [9, 10, 11]) 
B = np.matrix([4], [8], [12]) 
C = np.matrix([13, 14]) 
D = np.matrix([15, 16]) 

в момент им с помощью: -

E = np.vstack((np.hstack(([A, B])), np.hstack((C, D)))) 

есть более краткий путь в MATLAB я бы просто использовать: - Е = (А, В, С, D);

Большое спасибо

+0

Не ваш вопрос, но есть ли какая-то конкретная причина, по которой вам нужно использовать матрицу, или вы просто используете ее, потому что это то, что вы использовали в MATLAB? В python массивы numpy почти всегда предпочитаются над матрицами. – TheBlackCat

+0

да, это единственная причина, вы бы рекомендовали использовать массивы? – josh

+0

Да, определенно. Во-первых, с Python 3.5, поддерживающим матричное умножение для массивов, массивы в значительной степени всегда нужны тем, что люди хотят на практике. Преимущество использования матриц редко. Кроме того, сообщество python стандартизировалось на массивах, поэтому большинство пакетов возвращают массивы, большинство ожидающих массивов, а не матриц, а некоторые функции даже внутри numpy преобразуют матрицы в массивы. – TheBlackCat

ответ

1

Я считаю, что ваши матрицы отсутствуют внешние скобки. Если определить

A = np.matrix([[1, 2, 3], [5, 6, 7], [9, 10, 11]]) 
B = np.matrix([[4], [8], [12]]) 
C = np.matrix([[13, 14]]) 
D = np.matrix([[15, 16]]) 

затем

E = np.bmat('A,B;C,D') 

дает

matrix([[ 1, 2, 3, 4], 
     [ 5, 6, 7, 8], 
     [ 9, 10, 11, 12], 
     [13, 14, 15, 16]]) 

np.bmat([[A,B],[C,D]]) также работает. См. the docs для получения дополнительной информации о numpy.bmat.

+0

'bmat' более лаконичен в том, как он называется, но функционально он выполняет те же 2 уровня' concatenate'. Я ожидаю, что скорость будет примерно одинаковой. – hpaulj

+0

спасибо, прекрасно работает – josh