我有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
答案 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]