2017-02-10 26 views
6

Şu anda 2 numpy.ndarray araya girebileceğim bir yöntem arıyorum.Numpy.ndarrays nasıl birleştirilir?

>>> a = np.random.rand(5,5) 
>>> print a 
[[ 0.83367208 0.29507876 0.41849799 0.58342521 0.81810562] 
[ 0.31363351 0.69468009 0.14960363 0.7685722 0.56240711] 
[ 0.49368821 0.46409791 0.09042236 0.68706312 0.98430387] 
[ 0.21816242 0.87907115 0.49534121 0.60453302 0.75152033] 
[ 0.10510938 0.55387841 0.37992348 0.6754701 0.27095986]] 
>>> b = np.random.rand(5,5) 
>>> print b 
[[ 0.52237011 0.75242666 0.39895415 0.66519185 0.87043142] 
[ 0.08624797 0.66193953 0.80640822 0.95403594 0.33977566] 
[ 0.13789573 0.84868366 0.09734757 0.06010175 0.48043968] 
[ 0.28871551 0.62186888 0.44603741 0.3351644 0.6417847 ] 
[ 0.85745394 0.93179792 0.62535765 0.96625077 0.86880908]] 
>>> 

baskı c shoule hem matrisler içiçe gereken toplam

[ 0.83367208 0.52237011 0.29507876 0.75242666 0.41849799 0.39895415 0.58342521 0.66519185 0.81810562 0.87043142] 

Ben üç Her sırada harmanlayabilmekle, ama bir anda iki yapmak kolay olacaktır tahmin şekilde.

ama bunu nasıl kolayca yaparım .. Dizileri kullanan bir yöntem okudum, ancak ndarrays ile yaptığından emin değilim?

cevap

5

Stack np.dstack ile üçüncü eksen boyunca bu ve geri 2D için yeniden şekillendirmek - üç dizi veya diziler daha da numara ile

np.dstack((a,b)).reshape(a.shape[0],-1) 

, basitçe olanlarda ekleyin. Böylece, üç dizi için, np.dstack((a,b,c)) kullanın ve üçüncü dizi olan c ile yeniden şekillendirin.

Numune koşmak -

In [99]: a 
Out[99]: 
array([[8, 4, 0, 5, 6], 
     [0, 2, 3, 0, 6], 
     [4, 4, 0, 6, 5], 
     [7, 5, 0, 7, 0], 
     [6, 7, 4, 7, 2]]) 

In [100]: b 
Out[100]: 
array([[3, 5, 8, 6, 5], 
     [5, 6, 8, 8, 4], 
     [8, 3, 3, 3, 5], 
     [2, 1, 1, 1, 3], 
     [5, 7, 7, 5, 7]]) 

In [101]: np.dstack((a,b)).reshape(a.shape[0],-1) 
Out[101]: 
array([[8, 3, 4, 5, 0, 8, 5, 6, 6, 5], 
     [0, 5, 2, 6, 3, 8, 0, 8, 6, 4], 
     [4, 8, 4, 3, 0, 3, 6, 3, 5, 5], 
     [7, 2, 5, 1, 0, 1, 7, 1, 0, 3], 
     [6, 5, 7, 7, 4, 7, 7, 5, 2, 7]]) 
+0

Sen sonunda '1D' vektörü içine yeniden şekillendirmek gerekebilir . Fakat +1. –

0

np.c_ için iyidir bu

a = np.arange(25).reshape(5, 5) 
b = -np.arange(25).reshape(5, 5) 
c = np.ones((5, 5)) 
d = np.zeros((5, 5)) 
np.c_[a.ravel(), b.ravel(), c.ravel(), d.ravel()].ravel() 

--->

array([ 0., 0., 1., 0., 1., -1., 1., 0., 2., -2., 1., 
    0., 3., -3., 1., 0., 4., -4., 1., 0., 5., -5., 
    1., 0., 6., -6., 1., 0., 7., -7., 1., 0., 8., 
    -8., 1., 0., 9., -9., 1., 0., 10., -10., 1., 0., 
    11., -11., 1., 0., 12., -12., 1., 0., 13., -13., 1., 
    0., 14., -14., 1., 0., 15., -15., 1., 0., 16., -16., 
    1., 0., 17., -17., 1., 0., 18., -18., 1., 0., 19., 
    -19., 1., 0., 20., -20., 1., 0., 21., -21., 1., 0., 
    22., -22., 1., 0., 23., -23., 1., 0., 24., -24., 1., 
    0.])