How can I simultaneously select all odd rows and all even columns of an array

numpy, python

Solution

Let's say you have this array, x:

>>> import numpy
>>> x = numpy.array([[ 1,  2,  3,  4,  5],
... [ 6,  7,  8,  9, 10],
... [11, 12, 13, 14, 15],
... [16, 17, 18, 19, 20]])

To get every other odd row, like you mentioned above:

>>> x[::2]
array([[ 1,  2,  3,  4,  5],
       [11, 12, 13, 14, 15]])

To get every other even column, like you mentioned above:

>>> x[:, 1::2]
array([[ 2,  4],
       [ 7,  9],
       [12, 14],
       [17, 19]])

Then, combining them together yields:

>>> x[::2, 1::2]
array([[ 2,  4],
       [12, 14]])

For more details, see the Indexing docs page.

Problem

I'm new to programming and I need a program, that can select all odd rows and all even columns of a Numpy array at the same time in one code. here is what I tried: ``` >In [78]: a >Out[78]: >array([[ 1, 2, 3, 4, 5], > [ 6, 7, 8, 9, 10], > [11, 12, 13, 14, 15], > [16, 17, 18, 19, 20]]) > >In [79]: for value in range(a.shape[0]): > if value %2 == 0: > print a[value,:] >[1 2 3 4 5] >[11 12 13 14 15] > >In [82]: for value in range(a.shape[1]): > if value %2 == 1: > print a[:,value] >[ 2 7 12 17] >[ 4 9 14 19] ``` I've read something with `(: even)` but don't know in which way I could use it. Thanks for your Help. Han

Original source