2013-05-09 23 views
22

Sự khác biệt chính xác giữa numpy vstackcolumn_stack là gì. Đọc qua tài liệu, có vẻ như column_stack là việc triển khai vstack cho mảng 1D. Nó có thực hiện hiệu quả hơn không? Nếu không, tôi không thể tìm thấy lý do chỉ để có vstack.numpy vstack so với column_stack

Trả lời

50

Tôi nghĩ rằng đoạn mã sau minh họa sự khác biệt độc đáo:

>>> 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]) 

Tôi đã bao gồm hstack để so sánh là tốt. Lưu ý cách ngăn xếp column_stack dọc theo chiều thứ hai trong khi các ngăn xếp vstack dọc theo thứ nguyên đầu tiên. Tương đương với column_stackhstack lệnh sau:

>>> np.hstack(([[1],[2],[3]],[[4],[5],[6]])) 
array([[1, 4], 
     [2, 5], 
     [3, 6]]) 

Tôi hy vọng chúng ta có thể đồng ý rằng column_stack là thuận tiện hơn.

6

Trong phần Thuyết minh column_stack, nó chỉ ra điều này:

Chức năng này tương đương với np.vstack(tup).T.

Có nhiều chức năng trong numpy là trình bao bọc tiện lợi của các chức năng khác. Ví dụ: phần Ghi chú của vstack cho biết:

Tương đương với np.concatenate(tup, axis=0) nếu tup chứa mảng ít nhất 2 chiều.

Có vẻ như column_stack chỉ là một chức năng tiện lợi cho vstack.