Как объединить 4 numpy матриц по оси x? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь объединить 4 numpy матриц по оси x. Ниже приведен написанный мной код.

print(dt.shape)
print(condition.shape)
print(uc.shape)
print(rt.shape)

x = np.hstack((dt, condition, uc, rt))

print(x.shape)

Я получаю следующий результат.

(215063, 1)
(215063, 1112)
(215063, 1)
(215063, 1)

Я получаю следующую ошибку.

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)

Final вывод должен быть

(215063, 1115)

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Я рекомендую вам использовать numpy concatenate . Я использовал это для объединения двух изображений в одно изображение. Это дает вам возможность объединить по любой из двух осей X и Y. Для получения дополнительной информации об этом посетите эту ссылку

0 голосов
/ 10 июля 2020

Ваш код в порядке. Чтобы подтвердить это, я выполнил следующий тест на меньших массивах:

dt = np.arange(1,6).reshape(-1,1)
condition = np.arange(11,41).reshape(-1,6)
uc = np.arange(71,76).reshape(-1,1)
uc = np.arange(81,86).reshape(-1,1)
print(dt.shape, condition.shape, uc.shape, rt.shape)
x = np.hstack((dt, condition, uc, rt))
print(x.shape)
print(x)

и получил:

(5, 1) (5, 6) (5, 1) (5, 1)
(5, 9)
[[ 1 11 12 13 14 15 16 81 41]
 [ 2 17 18 19 20 21 22 82 42]
 [ 3 23 24 25 26 27 28 83 43]
 [ 4 29 30 31 32 33 34 84 44]
 [ 5 35 36 37 38 39 40 85 45]]

Так что, вероятно, с вашими данными что-то не так.

Попытайтесь запустить np.hstack на указанном выше наборе массивов, отбрасывая каждый (один) из них по очереди.

Если в одном случае (без какого-либо массива) выполнение завершается успешно, то источником проблемы является просто В данном случае отсутствует массив.

Затем вам следует внимательно посмотреть на этот массив и найти, что с ним не так.

...