Genel olarak, herhangi bir eksen boyunca tüm dizi dizilerini birleştirebilirsiniz:
numpy.concatenate( LIST, axis=0 )
ama do listesinde şekil ve her dizinin boyutluluk hakkında endişe etmek (2 boyutlu 3x5 çıkışı için, onlar zaten tüm 2 boyutlu n-by-5 diziler olduğundan emin olmak için gerekmez) var. 1 boyutlu dizileri 2 boyutlu bir çıktının satırları olarak birleştirmek istiyorsanız, boyutlarını genişletmeniz gerekir.
Jorge'nin cevabının işaret ettiği gibi stack
, numpy 1.10'da tanıtılan işlev de var :
numpy.stack( LIST, axis=0 )
Bu tamamlayıcı yaklaşımı alır: her bir girdi dizisinin yeni bir görünümünü oluşturur ve birleştirmeden önce fazladan bir boyut ekler (bu durumda, solda, böylece her n
-element 1D dizisi, 1'e n
2B bir dizi olur). Yalnızca tüm giriş dizileri aynı şekle sahipse çalışır - hatta birleştirme ekseni boyunca bile.
vstack
(veya eşdeğer olarak row_stack
) çoğu zaman kullanımı daha kolay bir çözümdür çünkü 1 ve / veya 2 boyutlu diziler dizisini alır ve tüm listeyi bir araya getirmeden önce gerekli olduğunda ve yalnızca gerektiğinde boyutluluğu otomatik olarak genişletir. Yeni bir boyutun gerekli olduğu yerde, sola eklenir. Yine, yinelemeye gerek kalmadan tüm listeyi tek seferde birleştirebilirsiniz:
numpy.vstack( LIST )
Bu esnek davranış aynı zamanda sözdizimsel kısayolla da sergilenir numpy.r_[ array1, ...., arrayN ]
(köşeli parantezlere dikkat edin). Bu, açıkça adlandırılmış birkaç diziyi birleştirmek için iyidir, ancak sizin durumunuz için iyi değildir çünkü bu sözdizimi, sizin gibi bir dizi dizisini kabul etmeyecektir LIST
.
Ayrıca yatay (sütun şeklinde) istifleme için benzer bir işlev column_stack
ve kısayol ve neredeyse -analog bir işlev vardır — bazı nedenlerden dolayı ikincisi daha az esnektir (giriş dizilerinin boyutsallığı konusunda daha katıdır ve birleştirmeye çalışır) 1-D dizileri sütun olarak ele almak yerine uçtan uca).c_[...]
hstack
Son olarak, 1 boyutlu dizilerin dikey yığınlanması durumunda, aşağıdakiler de işe yarar:
numpy.array( LIST )
... çünkü diziler, başlangıca yeni bir boyut ekleyerek diğer dizilerin bir dizisinden oluşturulabilir.
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
bu doğru python sözdizimi değil. Lütfen açıkla.