/ / Помилка укладання / масив масиву в python - python, масиви, numpy, конкатенація

Помилка укладання / конкатенації масиву в python - python, масиви, numpy, concatenation

Я намагаюся об'єднати два масиви: 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 і відповідають правильним розмірам, з'єднання легко.