2017-02-10 3 views
6

मैं वर्तमान में उस विधि की तलाश में हूं जिसमें मैं 2 numpy.ndarray interleave कर सकते हैं।numpy.ndarrays interleave कैसे करें?

>>> 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]] 
>>> 

प्रिंट ग shoule प्रत्येक पंक्ति interleaving ऐसी है कि जा दोनों मैट्रिक्स

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

मेरे पास तीन कुल जो interleaved किया जाना चाहिए, लेकिन मैं लगता है कि एक समय में यह दो करने के लिए आसान होगा।

लेकिन मैं इसे आसानी से कैसे कर सकता हूं .. मैंने कुछ विधि पढ़ी जो सरणी का उपयोग करती थीं, लेकिन मुझे यह सुनिश्चित नहीं है कि मैं इसे अंडाकारों से करूँ?

उत्तर

5

ढेर np.dstack के साथ तीसरे अक्ष के साथ उन लोगों के और वापस 2D को नयी आकृति प्रदान -

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

तीन सरणियों या सरणियों के और भी अधिक संख्या के साथ बस उन में जोड़ सकते हैं। इस प्रकार, तीन सरणी के लिए, उपयोग करें: np.dstack((a,b,c)) और c के साथ तीसरे सरणी के साथ reshape।

नमूना रन -

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

आप अंत में एक '1D' वेक्टर में नयी आकृति प्रदान करने की आवश्यकता हो सकती । लेकिन +1। –

0

np.c_ के लिए अच्छा है इस

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.]) 
संबंधित मुद्दे