Вам не нужно выполнять итерацию, особенно с простым состоянием.И вам не нужно использовать delete
:
Образец массива:
In [693]: x=np.arange(10)
маска, логический массив был условие истинно (или ложно):
In [694]: msk = x%2==0
In [695]: msk
Out[695]: array([ True, False, True, False, True, False, True, False, True, False], dtype=bool)
where
(или nonzero
) преобразует его в индексах
In [696]: ind=np.where(msk)
In [697]: ind
Out[697]: (array([0, 2, 4, 6, 8], dtype=int32),)
Вы можете использовать весь ind
в одном вызове delete
(нет необходимости перебирать):
In [698]: np.delete(x,ind)
Out[698]: array([1, 3, 5, 7, 9])
Вы можете использовать его ind
, чтобы сохранить эти значения вместо:
In [699]: x[ind]
Out[699]: array([0, 2, 4, 6, 8])
Или вы можете использовали булево msk
непосредственно:
In [700]: x[msk]
Out[700]: array([0, 2, 4, 6, 8])
или использовать обратные:
In [701]: x[~msk]
Out[701]: array([1, 3, 5, 7, 9])
delete
не делает этого больше, чем этот вид булевой маскировки. Это все код Python, поэтому вы можете легко изучить его.
не удается, потому что 'p' должно быть' pos' –
извините, опечатка здесь, теперь написано correctcltly – KeVal
Почему вы так уверены, что линия - это где ваша ошибка? – user2357112