Как создать матрицу из нескольких других матриц? - PullRequest
0 голосов
/ 11 ноября 2019

У меня проблема с соединением нескольких матриц. Скажем, у меня есть четыре матрицы A, B, C, D. И я хочу присоединиться к ним таким образом, чтобы получить новый

M = A B
    C D

Как я могу сделать это, используя python numpy?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Используя функции hstack и vstack NumPy, вы можете генерировать M из любых A, B, C, D какПока каждые два числа строк и / или количество столбцов совпадают. См. Следующий пример:

import numpy as np

A = np.random.rand(3, 2)    # (3 x 2)
B = np.random.rand(3, 4)    # (3 x 4)
C = np.random.rand(4, 3)    # (4 x 3)
D = np.random.rand(4, 3)    # (4 x 3)

print(A, '\n')
print(B, '\n')
print(C, '\n')
print(D, '\n')

M = np.vstack((np.hstack((A, B)), np.hstack((C, D))))
#             (3 x 6)             (4 x 6)
#   (7 x 6)

print(M)

Выход:

[[0.60220154 0.77067838]
 [0.7623169  0.54727146]
 [0.20570341 0.56939493]] 

[[0.322524   0.35260186 0.6581785  0.55662823]
 [0.32034862 0.68664386 0.96432518 0.03410233]
 [0.72779584 0.6705618  0.66460412 0.104223  ]] 

[[0.20194483 0.49971436 0.50618483]
 [0.89040491 0.25118623 0.67831283]
 [0.30631334 0.69515443 0.70941023]
 [0.41324506 0.23127909 0.29241595]] 

[[0.0015009  0.43205507 0.08500188]
 [0.48506546 0.46448833 0.61393518]
 [0.51163779 0.81914233 0.21293481]
 [0.33713576 0.33953848 0.9909197 ]] 

[[0.60220154 0.77067838 0.322524   0.35260186 0.6581785  0.55662823]
 [0.7623169  0.54727146 0.32034862 0.68664386 0.96432518 0.03410233]
 [0.20570341 0.56939493 0.72779584 0.6705618  0.66460412 0.104223  ]
 [0.20194483 0.49971436 0.50618483 0.0015009  0.43205507 0.08500188]
 [0.89040491 0.25118623 0.67831283 0.48506546 0.46448833 0.61393518]
 [0.30631334 0.69515443 0.70941023 0.51163779 0.81914233 0.21293481]
 [0.41324506 0.23127909 0.29241595 0.33713576 0.33953848 0.9909197 ]]

Вы можете переключать vstack и hstack, если количество столбцов A / C иB / D совпадают, и количество строк этих конкатенаций равно.

Надеюсь, это поможет!

0 голосов
/ 11 ноября 2019

Учитывая, что все имеют одинаковое измерение, вот пример:

>>> A = np.arange(4).reshape(2,2)
>>> B, C, D = A*2, (A+1), (A+2)
>>> M = np.array([[A,B],[C,D]])
>>> M
array([[[[0, 1],
         [2, 3]],

        [[0, 2],
         [4, 6]]],


       [[[1, 2],
         [3, 4]],

        [[2, 3],
         [4, 5]]]])

Или, если вы хотите что-то вроде этого:

>>> M = np.concatenate([np.concatenate([A,B],axis = 1),np.concatenate([C,D],axis = 1)],axis = 0)
>>> M
array([[0, 1, 0, 2],
       [2, 3, 4, 6],
       [1, 2, 2, 3],
       [3, 4, 4, 5]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...