Numpy Indexing:为每个偶数行获取每秒的coloumn

时间:2015-06-10 12:02:11

标签: python numpy indexing

我想在一个numpy数组中选择所有奇数对角线。基本上如下:

a = np.arange(16).reshape(4,4)
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
b = a[::2,1::2] and at the same time a[1::2,::2]
array([[ 1,  3],
       [ 4, 6],
       [9, 11],
       [12,14]])

以不同的方式表达:在每个偶数行中,我希望每个第二列的偏移量为1,并且在每个奇数行中我希望每个第二列。如果可以在不创建额外副本的情况下实现这一点,那就太棒了。

1 个答案:

答案 0 :(得分:3)

好的,如果我们无法避免任何副本,那么最简单的事情可能就是:

a = np.arange(16).reshape(4,4)
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
b = np.zeros((a.shape[0], a.shape[1]/2))
b[::2,:]  = a[::2,1::2]
b[1::2,:] = a[1::2,::2]
>>>> b
array([[  1.,   3.],
   [  4.,   6.],
   [  9.,  11.],
   [ 12.,  14.]])