我想从数组中选择特定范围的索引

时间:2017-12-14 22:50:28

标签: python arrays python-3.x numpy indexing

我有numpy数组,我想根据它们的索引号选择一些值。我使用的是Python3.6

例如:

char[]

所以你可以看到上面的例子我想选择索引号:

np.array:
index#
[0]
[1]  + + + + + + + + + +         + + + + + + + + + +
[2]  + I want to selct +         + I don't want to select:
[3]  + the indexs:     +         +                  [0]
[4]  +      [2]        +         +                  [10]
[5]  +      [4]        +         +       Or any between
[6]  +      [6]        +         + 
[7]  +      [8]        +         + + + + + + + + + +
[8]  + + + + + + + + + +
[9]
[10]

如果我只是在x中指定数字但是如果我想制作x变量,我会尝试这样做:

if x = 2, 4, 8

其中 x + 2 =我想要的第一个索引(起点)。 x-last_index_number =我想要的最后一个索引(最后一个点)。 x + 2 =步骤(我希望它通过向x添加2来转到下一个索引号,依此类推。 但这没用。

所以我的问题是我可以指定要按特定顺序选择的数字:

if x:
for i in np.arange(x+2, x-last_index_number, x+2):
return whatever 

2 个答案:

答案 0 :(得分:2)

Numpy切片允许您向数组输入索引列表,以便您可以切片到所需的确切值。

例如:

    import numpy as np
    a = np.random.randn(10)
    a[[2,4,6,8]]

这将返回第2,第4,第6和第8个数组元素(请记住python索引从0开始)。因此,如果您希望每个第二个元素从索引x开始,您只需使用这些元素填充列表,然后将该列表提供给数组以获取所需的元素,例如:

    idx = list(range(2,10,2))
    a[idx]

这又返回了所需的元素(索引2,4,6,8)。

答案 1 :(得分:2)

你的x是一个长度为20的数组

x = np.arange(0,20)

返回

x [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]

访问每个第n个(偶数索引)元素忽略数组x中的前两个和最后两个索引

print(x[2:len(x)-1:2])

返回

[2 4 6 8]

对于其他类似的方式,

print(x[5:len(x)-1:5])
print(x[4:len(x)-1:4])

返回

[ 5 10 15]
[ 4  8 12 16]