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

Nump vstack vs. column_stack

В чем именно заключается разница между numpy vstack и column_stack. Чтение документации, похоже, что column_stack представляет собой реализацию vstack для 1D массивов. Это более эффективная реализация? В противном случае я не могу найти причину просто иметь vstack.

4b9b3361

Ответ 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.