Ответ 1
unutbu отвечает вообще, но в этом случае также есть np.column_stack
>>> x
array([[1, 2],
[4, 5]])
>>> y
array([3, 6])
>>> np.column_stack((x,y))
array([[1, 2, 3],
[4, 5, 6]])
У меня есть массив 2x2 numpy:
x = array(([[1,2],[4,5]]))
который я должен объединить (или стек, если хотите) с одномерным массивом:
y = array(([3,6]))
добавив его в конец строк, тем самым создав массив 2x3 numpy, который будет выводиться следующим образом:
массив([[1, 2, 3], [4, 5, 6]])
теперь предлагаемый метод для этого в путеводителях numpy:
hstack((x,y))
однако это не сработает, возвращая следующую ошибку:
ValueError: массивы должны иметь одинаковое количество измерений
Единственное возможное обходное решение, похоже, заключается в следующем:
hstack((x, array(([y])).T ))
который работает, но выглядит и звучит довольно хаки. Кажется, нет другого способа транспонировать данный массив, чтобы hstack смог его переварить. Мне было интересно, есть ли более чистый способ сделать это? Разве не было бы способа для numpy угадать, что я хотел сделать?
unutbu отвечает вообще, но в этом случае также есть np.column_stack
>>> x
array([[1, 2],
[4, 5]])
>>> y
array([3, 6])
>>> np.column_stack((x,y))
array([[1, 2, 3],
[4, 5, 6]])
Также работает:
In [22]: np.append(x, y[:, np.newaxis], axis=1)
Out[22]:
array([[1, 2, 3],
[4, 5, 6]])