numpy .dstack для 3D-массивов? - PullRequest
       0

numpy .dstack для 3D-массивов?

1 голос
/ 22 января 2020

np.dstack работает, как и ожидалось, для двумерных массивов, но по какой-то причине для трехмерных массивов он складывается не по последнему измерению.

Как правильно выбрать стек по последнему измерению для ND массивы?

Пример:

import numpy as np

#2D
a = np.zeros((2,2,1))
a.shape
(2, 2, 1)

np.dstack([a] * 3).shape
(2, 2, 3)

#3D
b = np.zeros((8,2,2,1))
b.shape
(8, 2, 2, 1)
np.dstack([b] * 3).shape
(8, 2, 6, 1)

1 Ответ

0 голосов
/ 22 января 2020

Если вы хотите сложить массив против себя, как в вашем примере, вы можете использовать np.repeat

b = np.zeros((8,2,2,1))
n_stacks = 3
np.repeat(b, n_stacks, axis=b.ndim-1).shape
(8, 2, 2, 3)

Если вы хотите сложить два разных массива вдоль их последнего измерения, вы можете использовать np. сцепление

b = np.zeros((8,2,2,1))
c = np.ones((8,2,2,1))
np.concatenate((b,c),axis=b.ndim-1).shape
(8, 2, 2, 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...