Первый аргумент concatenate
- это последовательность массивов.Конечно, многомерный массив всегда можно рассматривать как последовательность массивов, поэтому передача c
делает то же самое, что и передача (a, b)
здесь.
Итак, каждый из двух массивов, которые вы объединяетеявляются 1-мерными.Вы пытаетесь объединить их по оси 1, оси, которой у них нет.Отсюда и ошибка.
Если вы хотите добавить ось и объединить ее вдоль этой новой оси, это будет stack
(или vstack
или hstack
), а не concatenate
.
Между тем, я не уверен, какой вывод вы пытаетесь получить, но, поскольку вы уже создали c
, возможно, его проще использовать.Например:
stack((a, b))
или stack(c)
или, если вы настаиваете, concatenate([c])
все даст вам array([[0, 1, 2], [3, 4, 5]])
... но так же будет просто использовать c
. stack((a, b), axis=1)
и т. Д. Даст вам array([[0, 3], [1, 4], [2, 5]])
, но c.T
.
Почему np.concatenate([c], axis=1)
преуспеет?Ну, [c]
- это последовательность одного двумерного массива.У которого, конечно, есть ось 1. Таким образом, он объединяет этот массив ни с чем и возвращает вам то же самое, что и c
.
И почему np.concatenate([grid, grid], axis=1)
успешен, где grid
такой же2D массив как c
?Поскольку [grid, grid]
является последовательностью из двух 2D-массивов, каждый из которых имеет ось 1, поэтому он объединит их вместе, что даст вам [[0, 1, 2, 0, 1, 2], [3, 4, 5, 3, 4, 5]]
.