2010-11-11 9 views
14

Mam tablicę 2x2 numpy:Numpy: Połączenie wielowymiarowych i jednowymiarowe tablice

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

który musi scalić (lub stosu, jeśli chcesz) z jednowymiarowej tablicy:

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

przez dodanie go do końca w rzędach, przez co w numpy układ 2x3, że wyjście tak:

tablicy ([[1, 2, 3] [4, 5, 6]])

teraz proponowana metoda ta w NumPy przewodników jest:

hstack((x,y)) 

jednak to nie zadziała, zwracając się następujący błąd:

ValueError: arrays must have same number of dimensions

Jedyne obejście wydaje się być możliwe do zrobienia to:

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

który działa, ale wygląda i brzmi raczej hackish. Wydaje się, że nie ma innego sposobu na transponowanie danej tablicy, tak aby hstack mógł ją przetrawić. Zastanawiam się, czy istnieje lepszy sposób na zrobienie tego? Czy nie byłoby sposobu na numpy, aby odgadnąć, co chciałem zrobić? Odpowiedź

Odpowiedz

27

unutbu za działa w ogóle, ale w tym przypadku nie ma również 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

działa również:

In [22]: np.append(x, y[:, np.newaxis], axis=1) 
Out[22]: 
array([[1, 2, 3], 
     [4, 5, 6]])