Nói chung, bạn có thể nối một chuỗi toàn bộ mảng dọc theo bất kỳ trục nào:
numpy.concatenate( LIST, axis=0 )
nhưng bạn làm phải lo lắng về hình dáng và chiều của mỗi mảng trong danh sách (đối với một sản lượng 3x5 2 chiều, bạn cần phải đảm bảo rằng họ là tất cả 2 chiều n-by-5 mảng đã được). Nếu bạn muốn nối các mảng 1 chiều như các hàng của đầu ra 2 chiều, bạn cần mở rộng kích thước của chúng.
Như câu trả lời của Jorge đã chỉ ra, cũng có chức năng stack
, được giới thiệu trong numpy 1.10:
numpy.stack( LIST, axis=0 )
Điều này sử dụng phương pháp bổ sung: nó tạo ra một dạng xem mới của mỗi mảng đầu vào và thêm một thứ nguyên bổ sung (trong trường hợp này là ở bên trái, vì vậy mỗi n
mảng -tăng số 1D trở thành một mảng 1 x n
2D) trước khi nối. Nó sẽ chỉ hoạt động nếu tất cả các mảng đầu vào có cùng hình dạng — thậm chí dọc theo trục nối.
vstack
(hoặc tương đương row_stack
) thường là một giải pháp dễ sử dụng hơn vì nó sẽ lấy một chuỗi các mảng 1 và / hoặc 2 chiều và tự động mở rộng kích thước khi cần thiết và chỉ khi cần thiết, trước khi nối toàn bộ danh sách với nhau. Khi yêu cầu thứ nguyên mới, thứ nguyên này sẽ được thêm vào bên trái. Một lần nữa, bạn có thể nối toàn bộ danh sách cùng một lúc mà không cần lặp lại:
numpy.vstack( LIST )
Hành vi linh hoạt này cũng được thể hiện bằng phím tắt cú pháp numpy.r_[ array1, ...., arrayN ]
(lưu ý dấu ngoặc vuông). Điều này tốt cho việc nối một vài mảng được đặt tên rõ ràng nhưng không tốt cho tình huống của bạn vì cú pháp này sẽ không chấp nhận một chuỗi các mảng, giống như của bạn LIST
.
Ngoài ra còn có một hàm column_stack
và phím tắt tương tự c_[...]
, để xếp chồng theo chiều ngang (theo cột), cũng như một hàm gần như -analogous hstack
— mặc dù vì một số lý do, hàm sau kém linh hoạt hơn (nó chặt chẽ hơn về kích thước của mảng đầu vào và cố gắng nối Các mảng 1-D end-to-end thay vì coi chúng là cột).
Cuối cùng, trong trường hợp cụ thể của việc xếp chồng theo chiều dọc của mảng 1-D, điều sau cũng hoạt động:
numpy.array( LIST )
... bởi vì mảng có thể được xây dựng từ một chuỗi các mảng khác, thêm một chiều mới vào đầu.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
đây không phải là cú pháp python chính xác. Vui lòng làm rõ.