Python 如何同时选择数组的所有奇数行和所有偶数列
我是编程新手,我需要一个程序,可以在一个代码中同时选择Numpy数组的所有奇数行和所有偶数列。 以下是我尝试过的:Python 如何同时选择数组的所有奇数行和所有偶数列,python,numpy,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
>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]
我读过一些关于(:偶数)
的东西,但不知道该用哪种方式。
谢谢你的帮助
Han假设你有这个数组,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]
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]])
有关更多详细信息,请参阅文档页面。要获取其他奇数列:
x[:,0::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]]
您能更清楚地了解所需的输出是什么吗?由于numpy数组的索引为零,我相信您建议获得偶数行和奇数列。这看起来很神奇,所以我深入研究了文档。工作原理:Numpy索引遵循开始:停止:步幅约定。1::2甚至是什么意思???@ErnieSender-请看@ErnieSender,据我所知,这意味着从索引1中提取步骤2(在这种特殊情况下与COL相关,因为它位于
,
)之后),即如果您的COL ID为0,1,2,3,4,5,。。。需要1,3,5,。。。