У меня есть 2 arrays, один имеет форму (2,2), а другой - форму (2,2,2). Я хочу сложить их вместе, чтобы мой окончательный результат имел форму (3,2,2). Я поставлю иллюстрацию того, о чем я говорю

Array 1  ->    [ 1,2 ]      -> shape(2,2)
               [ 3,4 ]

Array 2  ->    [ 5,6 ]     [ 9,10  ]     -> shape (2,2,2)
               [ 7,8 ]     [ 11,12 ]
              

Final Array after stacking Arrays 1 and 2  ->  [ 1,2 ]       [ 5,6 ]     [ 9,10  ]    ->shape (3,2,2)
                                               [ 3,4 ]       [ 7,8 ]     [ 11,12 ]
0
Shafiq 2 Мар 2021 в 15:16

2 ответа

Лучший ответ

Для большей гибкости при выборе размеров вы можете использовать ravel с reshape:

import numpy as np
arr1 = np.arange(1, 5).reshape(2, 2)
arr2 = np.arange(5, 13).reshape(2, 2, 2)

stack = np.concatenate((arr1.ravel(),arr2.ravel())).reshape(3,2,2)

Выход:

>>> stack
array([[[ 1,  2],
        [ 3,  4]],

       [[ 5,  6],
        [ 7,  8]],
    
       [[ 9, 10],
        [11, 12]]])
0
Rishabh Kumar 2 Мар 2021 в 12:35

Используйте numpy.dstack, чтобы складывать массивы вместе ось d epth (третья):

import numpy as np

a = np.arange(1, 5).reshape(2, 2)
b = np.arange(5, 13).reshape(2, 2, 2)

c = np.dstack((a, b))
print(c)
#[[[ 1  5  6]
#  [ 2  7  8]]
#
# [[ 3  9 10]
#  [ 4 11 12]]]
print(c.shape)
# (2, 2, 3)
0
Jan Christoph Terasa 2 Мар 2021 в 12:36