np.delete
принимает несколько маршрутов в зависимости от характера массива obj
.В этом случае, когда он генерируется where
и, следовательно, является массивом индексов для удаления, он принимает следующий маршрут:
def foo1(data, idx):
msk = np.ones(data.shape[0],bool)
msk[idx] = False
return data[msk, :]
То есть он создает логическую маску True и устанавливаетвыбранные элементы в ложь.arr[tuple(slobj)]
- немного более общая версия для обработки параметра оси.Но в вашем случае ось равна 0, поэтому я могу упростить ее до [msk,:]
.
Так что msk
- это просто 1-й логический размер числа строк вашего data
.
np.delete(target_data,pos_to_delete,axis=0)
вернет столбец target_data
минус удаления, довольно маленький 1d массив.
np.delete(data, ...)
вернет массив сопоставимого размера с data
, минус сколько бы вы ни удалили.
Это заставляет меня думать, что ваш data
настолько велик, что едва ли есть место для каких-либо вычислений с ним, даже что-то настолько простое, как создание копии.