2016-07-07 2 views
1

У меня есть два Numpy массивов формыКонкатенация два Numpy массива выдает

(129873, 12) 
(129873,) 

Я хотел бы объединить эти так что они находятся в форме:

(129873, 13) 

Я попытался numpy.concatenate и numpy.vstack но как представляется, возникают ошибки:

ValueError: all the input arrays must have same number of dimensions

Любые предложения о том, как d o это?

ответ

1

Так один массив имеет 2 размеры, другой 1:

(129873, 12) 
(129873,) 

Вам нужно изменить 2-ую форму, чтобы иметь форму (129873,1). Затем вы можете конкатенатировать по оси 1.

Существует несколько способов сделать это. [:,None] или np.newaxis индексации моя любимая:

In [648]: A=np.ones((3,4),int) 

In [649]: B=np.ones((3,),int) 

In [650]: B[:,None].shape 
Out[650]: (3, 1) 

In [651]: np.concatenate((A,B[:,None]),axis=1).shape 
Out[651]: (3, 5) 

B.reshape(-1,1) также работает. Также np.atleast_2d(B).T и np.expand_dims(B,1).

np.column_stack((A,B)) использует np.array(arr, copy=False, subok=True, ndmin=2).T, чтобы гарантировать, что каждый массив имеет правильное количество измерений.

Несмотря на то, что имеются обложки concatenate, например column_stack, важно знать, как напрямую изменять размеры.

1

Я думаю, что это было уже ответил здесь:

Numpy: Concatenating multidimensional and unidimensional arrays

import numpy 
a = numpy.array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) 
b = numpy.array([5, 6, 6]) 
c = numpy.column_stack((a,b)) 
print a 
print b 
print c 
print a.shape 
print b.shape 
print c.shape 

Это дает:

[[1 2 3 4 5] 
[1 2 3 4 5] 
[1 2 3 4 5]] 
[5 6 6] 
[[1 2 3 4 5 5] 
[1 2 3 4 5 6] 
[1 2 3 4 5 6]] 
(3, 5) 
(3,) 
(3, 6) 
Смежные вопросы