Vstack из двух массивов с одинаковым количеством строк выдает ошибку - PullRequest
0 голосов
/ 03 марта 2020

У меня есть массив numpy формы (29, 10) и список из 29 элементов, и я хочу получить массив формы (29,11)

Я в основном конвертирую список в массив numpy и попытка vstack, но он жалуется на то, что размеры не совпадают.

Пример игрушки

a = np.zeros((29,10))
a.shape
(29,10)

b = np.array(['A']*29)
b.shape
(29,)

np.vstack((a, b))
ValueError: all the input array dimensions except for the concatenation axis must match exactly

Размеры действительно совпадают, почему я получаю эту ошибку и как я могу это решить?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Проблема в том, что вы хотите добавить одномерный массив в двухмерный массив. Кроме того, для измерения, которое вы дали для b, вы, вероятно, ищете hstack. Попробуйте это:

a = np.zeros((29,10))
a.shape
(29,10)

b = np.array(['A']*29)[:,None] #to ensure 2D structure
b.shape
(29,1)

np.hstack((a, b))

Если вы хотите вертикальный стек, вам понадобится:

a = np.zeros((29,10))
a.shape
(29,10)

b = np.array(['A']*10)[None,:] #to ensure 2D structure
b.shape
(1,10)

np.vstack((a, b))
0 голосов
/ 03 марта 2020

Я думаю, что вы ищете np.hstack.

np.hstack((a, b.reshape(-1,1)))

Более того b должно быть двухмерным, поэтому я использовал reshape.

...