2010-11-11 2 views
14

У меня есть массив 2х2 Numpy:Numpy: Конкатенация многомерные и одномерные массивы

x = array(([[1,2],[4,5]])) 

, который я должен сливаться (или стек, если вы хотите) с одномерным массивом:

y = array(([3,6])) 

при добавлении его к концу строки, таким образом, делая массив Numpy 2x3, который будет выводить так:

массив ([[1, 2, 3], [4, 5, 6]])

теперь предлагаемый метод для этого в Numpy направляющими:

hstack((x,y)) 

однако это не работает, возвращая следующее сообщение об ошибке:

ValueError: arrays must have same number of dimensions

Единственный способ решения проблемы можно, кажется, сделать это:

hstack((x, array(([y])).T)) 

который работает, но выглядит и звучит довольно хакерским. Кажется, нет другого способа транспонировать данный массив, чтобы hstack смог его переварить. Мне было интересно, есть ли более чистый способ сделать это? Разве не было бы способа для numpy угадать, что я хотел сделать? Ответ

ответ

27

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]]) 
2

Также работает:

In [22]: np.append(x, y[:, np.newaxis], axis=1) 
Out[22]: 
array([[1, 2, 3], 
     [4, 5, 6]]) 
Смежные вопросы