29

我是编程新手,我需要一个程序,它可以在一个代码中同时选择 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)但不知道我可以以哪种方式使用它。谢谢你的帮助。

4

3 回答 3

86

假设你有这个数组,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]])

有关更多详细信息,请参阅索引文档页面。

于 2012-04-17T20:43:26.147 回答
5

要获取所有其他奇数列:

 x[:,0::2]
于 2018-10-18T22:08:57.373 回答
2

切片数组:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6],[7, 8, 9],[10, 11, 12],[13, 14, 15]])

case1=arr[::2,:]    #odd rows
case2=arr[1::2,:]   #even rows
case3=arr[:,::2]    #odd cols
case4=arr[:,1::2]   #even cols
print(case1)
print("\n") 
print(case2)
print("\n") 
print(case3)
print("\n") 
print(case4)
print("\n")      

给出:

[[ 1  2  3]
 [ 7  8  9]
 [13 14 15]]


[[ 4  5  6]
 [10 11 12]]


[[ 1  3]
 [ 4  6]
 [ 7  9]
 [10 12]
 [13 15]]


[[ 2]
 [ 5]
 [ 8]
 [11]
 [14]]
于 2020-11-20T19:04:13.573 回答