В чем именно заключается разница между numpy vstack
и column_stack
. Чтение документации, похоже, что column_stack
представляет собой реализацию vstack
для 1D массивов. Это более эффективная реализация? В противном случае я не могу найти причину просто иметь vstack
.
Nump vstack vs. column_stack
Ответ 1
Я думаю, что следующий код прекрасно иллюстрирует разницу:
>>> np.vstack(([1,2,3],[4,5,6]))
array([[1, 2, 3],
[4, 5, 6]])
>>> np.column_stack(([1,2,3],[4,5,6]))
array([[1, 4],
[2, 5],
[3, 6]])
>>> np.hstack(([1,2,3],[4,5,6]))
array([1, 2, 3, 4, 5, 6])
Я также включил hstack
для сравнения. Обратите внимание, как column_stack
складывается вдоль второго измерения, тогда как vstack
складывается вдоль первого измерения. Эквивалентом column_stack
является следующая команда hstack
:
>>> np.hstack(([[1],[2],[3]],[[4],[5],[6]]))
array([[1, 4],
[2, 5],
[3, 6]])
Надеюсь, мы сможем согласиться с тем, что column_stack
более удобен.
Ответ 2
В разделе "Примечания" к column_stack он указывает на следующее:
Эта функция эквивалентна
np.vstack(tup).T
.
В numpy
есть много функций, которые являются удобными оболочками других функций. Например, в разделе "Примечания" vstack говорится:
Эквивалентно
np.concatenate(tup, axis=0)
, если tup содержит массивы, которые являются по крайней мере 2-мерными.
Похоже, что column_stack
- это просто удобная функция для vstack
.