Di sini kami memperkenalkan dua kaedah penyambungan tatasusunan:
np.vstack(): tindanan dalam arah menegak
np.hstack(): jubin dalam arah mendatar
import numpy as np arr1=np.array([1,2,3]) arr2=np.array([4,5,6]) print np.vstack((arr1,arr2)) print np.hstack((arr1,arr2)) a1=np.array([[1,2],[3,4],[5,6]]) a2=np.array([[7,8],[9,10],[11,12]]) print a1 print a2 print np.hstack((a1,a2))
Keputusannya adalah seperti berikut:
[[1 2 3]
[4 5 6]]
[1 2 3 4 5 6]
[ [1 2]
[3 4]
[5 6]]
[[ 7 8]
[ 9 10]
[11 12]]
[[ 1 2 7 8]
[ 3 4 9 10]
[ 5 6 11 12]]
Perlu ditekankan di sini bahawa apabila menggunakan hstack, saya sedang melakukan tugasan1 pada cs231n saya selalu mendapat ralat di sini dalam hstack! Barulah saya sedar bahawa pengajian saya sebelum ini sangat dangkal!
(1) np.hstack()
Prototaip fungsi: numpy.hstack(tup)
di mana tup ialah jujukan tatasusunan, tup : jujukan daripada ndarray
Tatasusunan mesti mempunyai bentuk yang sama sepanjang semua kecuali paksi kedua, kecuali tatasusunan 1-D yang boleh menjadi sebarang panjang.
Bersamaan dengan: np . concatenate(tup, axis=1)
Contoh 1:
import numpy as np brr1=np.array([1,2,3,4,55,6,7,77,8,9,99]) brr1_folds=np.array_split(brr1,3) print brr1_folds print brr1_folds[0:2]+brr1_folds[1:3] print np.hstack((brr1_folds[:2]+brr1_folds[1:3])) print brr1_folds[0:2] print brr1_folds[1:3] #print np.hstack((brr1_folds[0:2],brr1_folds[1:3]))
Jika baris terakhir tidak dikomentari, ralat akan berlaku;
[ tatasusunan([ 1, 2, 3, 4]), tatasusunan([55, 6, 7, 77]), tatasusunan([ 8, 9, 99])]
[tatasusunan([1, 2, 3, 4]) , tatasusunan([55, 6, 7, 77]), tatasusunan([55, 6, 7, 77]), tatasusunan([ 8, 9, 99])]
[ 1 2 3 4 55 6 7 77 55 6 7 77 8 9 99]
[array([1, 2, 3, 4]), array([55, 6, 7, 77])]
[array([55, 6, 7 , 77]), tatasusunan([ 8, 9, 99])]
Sebab ralat ialah dimensi tatasusunan saya tidak konsisten. Hanya tukar kepada + Tanda tambah ialah penyambungan senarai!
Contoh 2:
print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7]))
Hasilnya ialah: Ia menunjukkan bahawa hstack tatasusunan satu dimensi adalah sewenang-wenangnya.
[1 2 3 3 4 3 4 5 8 6 6 7]
Contoh 3:
Menunjukkan bahawa timbunan h kita mesti mempunyai dimensi kedua yang sama:
print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7])) print np.hstack(([[1,2,3],[2,3,4]],[[1,2],[2,3]]))
Keputusan:
[1 2 3 3 4 3 4 5 8 6 6 7]
[[1 2 3 1 2][ 2 3 4 2 3]]
Jika anda menukar perkara di atas kepada yang berikut, ralat akan dilaporkan! ! !
print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7])) print np.hstack(([[1,2,3],[2,3,4]],[[1,2]]))
(2) np.vstack()
Prototaip fungsi: numpy.hstack(tup)
tup : jujukan ndarray< . dimensi Selain itu, bentuk mestilah sama dalam dimensi lain. Tatasusunan satu dimensi mestilah mempunyai saiz yang sama.
Contoh 1:Tetapi apa yang perlu anda perhatikan ialah baris kedua adalah salah! Contoh 2:
print np.vstack(([1,2,3],[3,4,3])) print np.vstack(([1,2,3],[2,3]))
Contoh 3:
print np.vstack(([[1,2,3],[3,4,3]],[[1,3,4],[2,4,5]])) print np.vstack(([[1,2,3],[3,4,3]],[[3,4],[4,5]]))
print np.vstack(([[1,2,3],[3,4,3]],[[2,4,5]])) print np.vstack(([[1,2,3],[3,4,3]],[[4,5]]))
[array([[ 1 , 2],
[ 2, 4],import numpy as np arr1=np.array([[1,2],[2,4],[11,33],[2,44],[55,77],[11,22],[55,67],[67,89]]) arr11=np.array([[11,2,3],[22,3,4],[4,5,6]]) arr1_folds=np.array_split(arr1,3) print arr1_folds print np.vstack(arr1_folds)
[55, 77],
[11, 22 ] ]), tatasusunan([[55, 67],[67, 89]])][[ 1 2]
[ 2 4]
[11 33]
[ 2 44]
[55 77]
[11 22]
[55 67]
[67 89]]
Atas ialah kandungan terperinci Cara menggunakan np.vstack() dan np.hstack() dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!