Python - Numpy: Как я могу одновременно выбрать все нечетные строки и все четные столбцы массива

Я новичок в программировании, и мне нужна программа, которая может выбирать все нечетные строки и все четные столбцы массива Numpy одновременно в одном коде. вот что я пробовал:

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

Я что-то читал с помощью "(: even)", но не знаю, каким образом я мог бы использовать его. спасибо за вашу помощь.

Хан

Ответ 1

Скажем, у вас есть этот массив, 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]])

Чтобы получить каждую другую нечетную строку, как вы упомянули выше:

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

Чтобы получить все остальные четные столбцы, как вы упомянули выше:

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

Затем объединение их вместе дает:

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