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

Chi*_*ion 5 python numpy python-2.7

如果我有一个 numpy 数组,并且想要将数组前半部分中的每个第 n 个元素替换为 0(后半部分没有变化),我怎样才能有效地做到这一点?现在我的代码不够高效: for i in xrange(1,half,n): s[i] = 0

xnx*_*xnx 5

只需使用a[:a.size//2:n] = 0. 例如:

a = np.ones(10)
a[:a.size//2:2] = 0
a
array([ 0.,  1.,  0.,  1.,  0.,  1.,  1.,  1.,  1.,  1.])
Run Code Online (Sandbox Code Playgroud)

另一个例子:

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.])
Run Code Online (Sandbox Code Playgroud)