Если вы собираетесь неоднократно «удалять» один элемент за раз, я бы предложил использовать логическую маску:
In [493]: a = np.arange(100)
In [494]: mask = np.ones(a.shape, dtype=bool)
In [495]: for i in [2,5,9,20,3,26,40,60]:
...: mask[i]=0
...: a1 = a[mask]
In [496]: a1.shape
Out[496]: (92,)
Это действительно то, что np.delete
делает, когда получает список или массив удалений
In [497]: a2 = np.delete(a, [2,5,9,20,3,26,40,60])
In [498]: np.allclose(a1,a2)
Out[498]: True
Для одного элемента объединяются два фрагмента - либо путем объединения, либо путем копирования в массив result
нужного размера. Во всех случаях мы должны создать новый массив.
Одно исключение или много, вы стремитесь к прерывистому отбору элементов оригинала. Это не может быть произведено с view
, который использует shape
и strides
для выбора обычного подмножества оригинала.