Python Numpy:替换数组前半部分中的每个n元素

Python Numpy:替换数组前半部分中的每个n元素,python,python-2.7,numpy,Python,Python 2.7,Numpy,如果我有一个numpy数组,并且希望在数组的前半部分将每个第n个元素替换为0(在后半部分中没有更改),那么如何有效地执行此操作?现在我的代码效率不够: 对于X范围内的i(1,半,n): s[i]=0您可以通过执行以下操作对数组进行切片: import numpy as np # make an array of 11 elements filled with zeros my_arr = np.zeros(11) # get indexes to change in the array. ra

如果我有一个numpy数组,并且希望在数组的前半部分将每个第n个元素替换为0(在后半部分中没有更改),那么如何有效地执行此操作?现在我的代码效率不够: 对于X范围内的i(1,半,n):
s[i]=0

您可以通过执行以下操作对数组进行切片:

import numpy as np
# make an array of 11 elements filled with zeros
my_arr = np.zeros(11)

# get indexes to change in the array. range is: range(start, stop[, step])
a = range(0, 5, 2)
# print the original array
print my_arr 

# Change the array
my_arr[a] = 1

# print the changes
print my_arr
产出:

array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])
array([ 0.,  1.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

只需使用
a[:a.size//2:n]=0
。e、 g:

a = np.ones(10)
a[:a.size//2:2] = 0
a
array([ 0.,  1.,  0.,  1.,  0.,  1.,  1.,  1.,  1.,  1.])
另一个例子:

a = np.ones(20)
n = 3
a[:a.size//2:n] = 0

a
array([ 0.,  1.,  1.,  0.,  1.,  1.,  0.,  1.,  1.,  0.,  1.,  1.,  1.,
    1.,  1.,  1.,  1.,  1.,  1.,  1.])

那么如何选择每个第n个元素呢?谢谢使用标准python表示法:
array[::n]