2014-08-27 3 views
2

Я хочу, чтобы добавить в список/1d массив (б) в конце каждой строки в 2d массив (а)добавить список в конце каждой строки 2D массива

вход:

a = np.array([[1, 1], [2, 2], [3, 3]]) 
b = np.array([4, 4]) 

желательно из:

array([[1, 1, 4, 4], 
     [2, 2, 4, 4], 
     [3, 3, 4, 4]]) 

мой код:

temp = [] 
for i in range(len(a)): 
    c = np.hstack((a[i], b)) 
    temp.append(c) 
d = np.vstack(temp) 

есть ли лучшее и быстрое решение для этого.

ответ

2
a = np.array([[1, 1], [2, 2], [3, 3]]) 
b = np.array([4, 4]) 

c = np.tile(b[np.newaxis,:], (a.shape[0],1)) 
d = np.concatenate((a,c), axis=1) 
+0

Thanks @Joel. Я понимаю, что вы подделали 'b', чтобы соответствовать форме' a', а затем конкатенироваться. но не понял 'b [np.newaxis,:]'. Вместо этого 'np.tile (b, (a.shape [0], 1))' также работал. – SNA

+0

Я просто добавил бит 'np.newaxis', чтобы сделать' b' двумерным. Вы правы, это работает без этого, поэтому вы можете игнорировать. –

+0

это быстрее, чем первый метод на основе петли? – user58419

Смежные вопросы