Как объединить массивы в NumPy? - PullRequest
0 голосов
/ 28 января 2019

У меня есть массив массивов 3x2x2, и я хочу присоединить к нему другой массив размером 3x2, чтобы мой новый массив был 3x2x3.Я пытался со стеком и конкатенацией, но я продолжаю получать ValueError: all input arrays must have the same shape.Существующий массив выглядит следующим образом:

array([[[1, 1],
        [2, 2]],

       [[3, 3],
        [4, 4]],

       [[5, 5],
        [6, 6]]])

И я хочу присоединиться к другому массиву, который выглядит примерно так:

array([[1, 2],
       [3, 4],
       [5, 6]])

Вывод будет выглядеть так:

array([[[1., 1., 1.],
        [2., 2., 2.]],

       [[3., 3., 3.],
        [4., 4., 4.]],

       [[5., 5., 5.],
        [6., 6., 6.]]])

Я не уверен, правильно ли я вывел выходные данные, так как способ, которым numpy отображает матрицы с 3 размерами, смущает меня - результат должен иметь форму (3,2,3).Я хочу сделать это итеративно, чтобы я мог продолжать расширять матрицу, чтобы форма была (3,2,4), затем (3,2,5), затем (3,2,6) и т. Д.

1 Ответ

0 голосов
/ 28 января 2019

Измените массив 3x2 на 3x2x1, а затем выполните dstack:

a = array([[[1, 1],
            [2, 2]],
           [[3, 3],
            [4, 4]],
           [[5, 5],
            [6, 6]]])

b = array([[1, 2],
           [3, 4],
           [5, 6]])

np.dstack((a, b[...,None]))
#array([[[1, 1, 1],
#        [2, 2, 2]],
#       [[3, 3, 3],
#        [4, 4, 4]],
#       [[5, 5, 5],
#        [6, 6, 6]]])

np.dstack((a, b[...,None])).shape
#(3, 2, 3)

или np.concatenate вдоль последней оси:

np.concatenate((a, b[...,None]), axis=-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...