Проблема с Numpy Concatenate? - PullRequest
       1

Проблема с Numpy Concatenate?

0 голосов
/ 12 июня 2018

Я пытаюсь использовать NumPy сцепление и сталкиваюсь с странной ошибкой.

Я хотел бы понять, почему это не удается:

a = np.arange(0,3)
b = np.arange(3,6)
c = np.array([a,b])
np.concatenate(c, axis=1)

AxisError: ось 1 выходит за пределыдля массива измерения 1

... но это успешно выполняется:

np.concatenate([c], axis=1)

, а также это успешно выполняется:

grid = np.array([[0,1,2], [3,4,5]])
print(grid)
np.concatenate([grid,grid], axis=1)

1 Ответ

0 голосов
/ 12 июня 2018

Первый аргумент 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]].

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