Secara umum, Anda dapat menggabungkan seluruh urutan array di sepanjang sumbu:
numpy.concatenate( LIST, axis=0 )
tetapi Anda tidak harus khawatir tentang bentuk dan dimensi dari setiap array dalam daftar (untuk output 3x5 2-dimensi, Anda perlu untuk memastikan bahwa mereka semua 2-dimensi array n-by-5 sudah). Jika Anda ingin menggabungkan larik 1 dimensi sebagai baris dari keluaran 2 dimensi, Anda perlu memperluas dimensinya.
Seperti yang ditunjukkan oleh jawaban Jorge, ada juga fungsi yang stack
diperkenalkan di numpy 1.10:
numpy.stack( LIST, axis=0 )
Ini mengambil pendekatan komplementer: ini membuat tampilan baru dari setiap larik masukan dan menambahkan dimensi tambahan (dalam hal ini, di sebelah kiri, sehingga setiap n
larik -elemen 1D menjadi larik 1-kali- n
2D) sebelum digabung. Ini hanya akan berfungsi jika semua larik masukan memiliki bentuk yang sama — bahkan di sepanjang sumbu penggabungan.
vstack
(atau secara ekuivalen row_stack
) sering kali merupakan solusi yang lebih mudah digunakan karena akan mengambil urutan array 1 dan / atau 2 dimensi dan memperluas dimensionalitas secara otomatis jika perlu dan hanya jika perlu, sebelum menggabungkan seluruh daftar bersama. Di mana dimensi baru diperlukan, itu ditambahkan di sebelah kiri. Sekali lagi, Anda dapat menggabungkan seluruh daftar sekaligus tanpa perlu mengulang:
numpy.vstack( LIST )
Perilaku fleksibel ini juga ditunjukkan oleh pintasan sintaksis numpy.r_[ array1, ...., arrayN ]
(perhatikan tanda kurung siku). Ini bagus untuk menggabungkan beberapa larik yang dinamai secara eksplisit tetapi tidak baik untuk situasi Anda karena sintaks ini tidak akan menerima urutan larik, seperti milik Anda LIST
.
Ada juga fungsi column_stack
dan pintasan analog c_[...]
, untuk penumpukan horizontal (berdasarkan kolom), serta fungsi yang hampir analog hstack
— meskipun untuk beberapa alasan yang terakhir kurang fleksibel (lebih ketat tentang dimensi larik masukan, dan mencoba menggabungkan Array 1-D ujung ke ujung alih-alih memperlakukannya sebagai kolom).
Akhirnya, dalam kasus khusus penumpukan vertikal dari larik 1-D, berikut ini juga berfungsi:
numpy.array( LIST )
... karena array dapat dibuat dari urutan array lain, menambahkan dimensi baru ke awal.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
ini bukan sintaks python yang benar. Mohon klarifikasi.