Я намагаюся об'єднати два масиви: a і b, де
a.shape
(1460,10)
b.shape
(1460,)
Я спробував використовувати hstack і concatenate як:
np.hstack((a,b))
c=np.concatenate(a,b,0)
Я застряг із помилкою
ValueError: all the input arrays must have same number of dimensions
Підкажіть, будь ласка, мене щодо конкатенації та генерації масиву c розмірами 1460 x 11.
Відповіді:
1 для відповіді № 1Спробуй
b = np.expand_dims( b,axis=1 )
потім
np.hstack((a,b))
або
np.concatenate( (a,b) , axis=1)
буде працювати належним чином.
1 для відповіді № 2
np.c_[a, b]
конкатенати вздовж останньої осі. Пер документи,
... масиви будуть розташовані уздовж останньої осі після модернізується щонайменше до 2-D з 1 "s після закінчення форми
З тих пір b
має форму (1460,)
її форма оновлюється до (1460, 1)
перед конкатенацією вздовж останньої осі.
In [26]: c = np.c_[a,b]
In [27]: c.shape
Out[27]: (1460, 11)
1 для відповіді № 3
Основна операція, яка працює:
np.concatenate((a,b[:,None]),axis=1)
The [:,None]
біт обертів b
в a (1060,1)
масив. Тепер 1-й розмір обох масивів збігається, і ви можете легко об'єднатись у 2-й.
Існує багато способів додавання 2-го виміру до b
, як от reshape
і expanddims
. hstack
використовує atleast_1d
що не допомагає в цьому випадку. atleast_2d
додає None
з неправильної сторони. Я наполегливо виступаю за навчання [:,None]
синтаксис
Після того як масиви є одночасно 2d і відповідають правильним розмірам, з'єднання легко.