Попытка объединить два массива с разными размерами - PullRequest
0 голосов
/ 01 февраля 2019

Я изучаю Python, и у меня есть 2 массива:

a = [[ 1 , 2 ]
      [3,  4]]
b = [ 6,7]

, когда я печатаю формы, которые я получаю:

a.shape = (2,2)
b.shape = (2,)

хочу, чтобы результат был:

c = [[ 1, 2 , 6]
     [3, 4, 7]]

Я пробовал

c = a + b

и

c = np.concatenate((a, b),axis=None) #tried axis=0, axis=1

У меня продолжают появляться ошибки типа

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

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Вы можете использовать numpy.vstack

In [22]: import numpy as np

In [23]: a = np.array([[1,2], [3,4]])

In [24]: b = np.array([6,7])

In [25]: np.vstack((a.T, b)).T
Out[25]:
array([[1, 2, 6],
       [3, 4, 7]])
0 голосов
/ 01 февраля 2019
In [868]: a = np.array([[1,2],[3,4]]); b = np.array([6,7])
In [869]: a.shape, b.shape
Out[869]: ((2, 2), (2,))

b имеет 1 измерение, для соответствия ему требуется 2 a:

In [870]: np.reshape(b,(2,1))
Out[870]: 
array([[6],
       [7]])

Теперь concatenate работает:

In [871]: np.concatenate((a, np.reshape(b,(2,1))), axis=1)
Out[871]: 
array([[1, 2, 6],
       [3, 4, 7]])

np.vstack работаетпотому что он добавляет новое начальное измерение, если это необходимо.Я добавил конечное измерение.

В долгосрочной перспективе, чтобы эффективно использовать concatenate, вы должны узнать об измерениях и о том, как их отрегулировать при необходимости.

0 голосов
/ 01 февраля 2019

Может быть, вы можете попробовать, как показано в numpy примере , но b должно иметь форму (1, 2), просто добавив массив в качестве внутреннего элемента массива: np.array([[6,7]])

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

c = np.concatenate((a, b.T), axis=1)

Выход:

[[1 2 6]
 [3 4 7]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...