如何删除数组中的每个第n个元素?
import numpy as np
x = np.array([0,10,27,35,44,32,56,35,87,22,47,17])
n = 3 # remove every 3rd element
...类似x[0::n]
的反面?我试过这个,但当然不行:
for i in np.arange(0,len(x),n):
x = np.delete(x,i)
答案 0 :(得分:10)
你已经关闭了...将整个范围作为子片段传递给删除而不是试图依次删除每个元素,例如:
import numpy as np
x = np.array([0,10,27,35,44,32,56,35,87,22,47,17])
x = np.delete(x, np.arange(0, x.size, 3))
# [10 27 44 32 35 87 47 17]
答案 1 :(得分:0)
如果数组的长度是n的倍数,我只是添加了另一种方法:
import numpy as np
x = np.array([0,10,27,35,44,32,56,35,87,22,47,17])
x = x.reshape(-1,3)[:,1:].flatten()
# [10 27 44 32 35 87 47 17]
在我的计算机上,它的运行速度几乎比使用np.delete
的解决方案快两倍(应该在1.8倍至1.9倍之间)。
您还可以轻松地执行一些高级操作,例如m个删除(每个n个值)等。