pythonarraysnumpy

Removing every nth element in an array


How do I remove every nth element in an array?

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

...something like the opposite of x[0::n]? I've tried this, but of course it doesn't work:

for i in np.arange(0,len(x),n):
    x = np.delete(x,i)

Solution

  • You're close... Pass the entire arange as subslice to delete instead of attempting to delete each element in turn, eg:

    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]