Можете ли вы найти определенное число, которое, как вы уверены, не будет в a
, а затем установить все индексы вокруг индексов b
на это число, чтобы впоследствии его можно было удалить
import numpy as np
for i in range(-10, 11):
a[b + i] = number_not_in_a
values = set(np.unique(a)) - set([number_not_in_a])
Этот код вообще не будет выделять новую память для a
, ему нужен только один созданный объект диапазона, и он выполняет работу ровно с 22 оптимизированными с помощью n-битовых операций (ну, 43, если считать операции b + i
) плюс стоимость превращения возвращаемого массива unique
в set
.
Осторожно, если b
включает индексы, которые меньше 10, «зона» number_not_in_a
вокруг этих индексов будет переходить на другой конец массива. Если b
включает в себя индексы, превышающие len(a) - 11
, операция завершится с ошибкой IndexError
в какой-то момент.