Вместо n-мерного массива, давайте возьмем трехмерный массив, чтобы проиллюстрировать мой вопрос:
>>> import numpy as np
>>> arr = np.ones(24).reshape(2, 3, 4)
Итак, у меня есть массив формы (2, 3, 4).Я хотел бы объединить / слить 2-ю и 3-ю оси вместе, чтобы получить массив формы (2, 12).
Неправильно, думал, что я мог бы сделать это легко с np.concatenate
:
>>> np.concatenate(arr, axis=1).shape
(3, 8)
Я нашел способ сделать это с помощью комбинации np.rollaxis и np.concatenate, но этовсе более и более уродливым, поскольку массив увеличивается в измерении:
>>> np.rollaxis(np.concatenate(np.rollaxis(arr, 0, 3), axis=0), 0, 2).shape
(2, 12)
Есть ли простой способ сделать это?Это кажется очень тривиальным, поэтому должна существовать какая-то функция, но я не могу ее найти.
РЕДАКТИРОВАТЬ: Действительно, я мог бы использовать np.reshape
, что означает сначала вычисление размеров оси.Возможно ли это без предварительного доступа / вычисления формы?