Объединить 1D массив в 3D массив - PullRequest
0 голосов
/ 10 октября 2018

У меня есть трехмерный массив A с формой (5774,15,100) и еще один массив 1 D B с формой (5774,).Я хочу добавить их, чтобы получить другую матрицу C с формой (5774,15,101).

Я использую hstack как

C = hstack((A ,np.array(B)[:,None]))

Я получаю следующую ошибку,любые предложения.

ValueError: could not broadcast input array from shape (5774,15,100) into shape (5774)

1 Ответ

0 голосов
/ 10 октября 2018

Вам нужно будет использовать np.concatenate (который может объединять массивы различной формы, в отличие от различных np.*stack методов).Затем вам нужно использовать np.broadcast_to, чтобы получить массив (5774,) в (5774, 15, 1) (потому что concatenate все еще требует, чтобы все массивы имели одинаковое количество измерений).

C = np.concatenate((A, 
                    np.broadcast_to(np.array(B)[:, None, None], A.shape[:-1] + (1,))), 
                   axis = -1)

Проверка:

A = np.random.rand(5774, 15, 100)
B = np.random.rand(5774)
C = np.concatenate((A, 
                    np.broadcast_to(np.array(B)[:, None, None], A.shape[:-1] + (1,))), 
                   axis = -1)
C.shape

Out: (5774, 15, 101)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...