Альтернативой является использование замаскированных массивов , которые, в зависимости от вашего приложения, могут повысить скорость, поскольку вам не нужно удалять записи и / или создавать новые ndarrays
, которые, AFAIK, довольно дорогиеоперации в numpy.
Пример:
import numpy as np
test = np.ones([1, 1001])
mask = np.zeros((1, 1001))
mask[:,4] = 1
result = np.ma.masked_array(test, mask)
Пятый элемент теперь маскируется, и на result
могут выполняться различные операции, например, методы sum()
или mean()
,Больше информации в ссылке, которую я дал вам.Если вы хотите получить настоящий ndarray
, просто позвоните result.compressed()
.Однако это потребует дорогостоящей работы по выделению новой памяти и копированию в нее данных.
Маскированные массивы могут быть не полезны для этой конкретной проблемы, но полезно знать, что они существуют.