'Skip every nth index of numpy array

In order to do K-fold validation I would like to use slice a numpy array such that a view of the original array is made but with every nth element removed.

For example:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

If n = 4 then the result would be

[1, 2, 4, 5, 6, 8, 9]

Note: the numpy requirement is due to this being used for a machine learning assignment where the dependencies are fixed.



Solution 1:[1]

numpy.delete :

In [18]: arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [19]: arr = np.delete(arr, np.arange(0, arr.size, 4))

In [20]: arr
Out[20]: array([1, 2, 3, 5, 6, 7, 9])

Solution 2:[2]

The slickest answer that I found is using delete with i being the nth index which you want to skip:

del list[i-1::i]

Example:

In [1]: a = list([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [2]: del a[4-1::4]
In [3]: print(a)
Out[3]: [0, 1, 2, 4, 5, 6, 8, 9]

If you also want to skip the first value, use a[1:].

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Chr
Solution 2 L.Lauenburg