Подтвердить что ты не робот

Конкатенация векторов столбцов с использованием массивов numpy

Я хотел бы объединить векторы столбца с использованием массивов numpy, но поскольку numpy видит все массивы как векторы строк по умолчанию, np.hstack и np.concatenate вдоль любой оси не помогают (и также не np.transpose как ожидается).

a = np.array((0, 1))
b = np.array((2, 1))
c = np.array((-1, -1))

np.hstack((a, b, c))
# array([ 0,  1,  2,  1, -1, -1])  ## Noooooo
np.reshape(np.hstack((a, b, c)), (2, 3))
# array([[ 0,  1,  2], [ 1, -1, -1]]) ## Reshaping won't help

Одна возможность (но слишком громоздкая)

np.hstack((a[:, np.newaxis], b[:, np.newaxis], c[:, np.newaxis]))
# array([[ 0,  2, -1], [ 1,  1, -1]]) ##

Есть ли лучшие способы?

4b9b3361

Ответ 1

Я считаю, numpy.column_stack должен делать то, что вы хотите. Пример:

>>> a = np.array((0, 1))
>>> b = np.array((2, 1))
>>> c = np.array((-1, -1))
>>> numpy.column_stack((a,b,c))
array([[ 0,  2, -1],
       [ 1,  1, -1]])

Он по существу равен

>>> numpy.vstack((a,b,c)).T

хотя. Как говорится в документации.

Ответ 2

Я попробовал следующее. Надеюсь, это хорошо для того, что вы делаете?

>>> np.vstack((a,b,c))
array([[ 0,  1],
       [ 2,  1],
       [-1, -1]])
>>> np.vstack((a,b,c)).T
array([[ 0,  2, -1],
       [ 1,  1, -1]])