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