8
Как удалить каждый n-й элемент в массиве?Python удаляет каждый 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)
Это на самом деле намного лучше сделано как 'np.delete (x, slice (None, None, 3))'. – Jaime
@Jaime очень приятное наблюдение - не думал проверить, '' np.delete' взял собственные 'slice' объекты! Похоже, что нет никакого преимущества в скорости, хотя даже с миллионом массива элементов (на самом деле это всегда так немного медленнее *), но хорошо знать - спасибо. –
Это странно ... В моей системе удаление каждого третьего элемента массива длиной 1 миллион элементов на срезе примерно на 1,7 раза быстрее: 'a = np.random.rand (1e6); % timeit np.delete (a, np.arange (0, 1e6, 3)) -> 100 циклов, лучше всего 3: 14,5 мс за цикл; % timeit np.delete (a, slice (None, None, 3)) -> 100 циклов, лучше всего 3: 8,41 мс за цикл'. – Jaime