簡體   English   中英

如何交錯numpy.ndarrays?

[英]How to interleave numpy.ndarrays?

我目前正在尋找可以交錯2 numpy.ndarray的方法。 這樣的

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

print c shoule將每行交錯兩個矩陣

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

我總共有三個應該是交錯的,但我想一次做兩個會更容易。

但是我如何輕松地做到這一點..我讀了一些使用數組的方法,但我不確定用ndarrays做什么?

使用np.dstack堆疊沿第三軸的np.dstack並重新np.dstack回到2D -

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

使用三個陣列或更多數量的陣列,只需添加其中。 因此,對於三個數組,使用: np.dstack((a,b,c))並重新np.dstack((a,b,c))其中c是第三個數組。

樣品運行 -

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM