Какое преимущество имеет массив numpy над списком python для вашего приложения?Я думаю, что одним из недостатков массивов numpy является то, что их нелегко изменить размер:
http://mail.python.org/pipermail/python-list/2008-June/1181494.html
Вам действительно нужно восстановить память из сегментов массива, который выукорочение?Если нет, возможно, вы можете использовать маскированный массив:
http://docs.scipy.org/doc/numpy/reference/maskedarray.generic.html
Если вы хотите заменить часть вашего сигнала более короткой частью шума, замените первый фрагмент сигнала, затем замаскируйте оставшуюся часть удаленного сигнала.
РЕДАКТИРОВАТЬ: Вот некоторый неуклюжий код, который не использует замаскированные массивы и не выделяет больше памяти.Это также не освобождает память для удаленных сегментов.Идея состоит в том, чтобы заменить данные, которые вы хотите удалить, сместив оставшуюся часть массива, оставив нули (или мусор) в конце массива.
import numpy
a = numpy.arange(10)
# [0 1 2 3 4 5 6 7 8 9]
## Replace a[2:7] with length-2 noise:
insert = -1 * numpy.ones((2))
new = slice(2, 4)
old = slice(2, 7)
#Just to indicate what we'll be replacing:
a[old] = 0
# [0 1 0 0 0 0 0 7 8 9]
a[new] = insert
# [0 1 -1 -1 0 0 0 7 8 9]
#Shift the remaining data over:
a[new.stop:(new.stop - old.stop)] = a[old.stop:]
# [0 1 -1 -1 7 8 9 7 8 9]
#Zero out the dangly bit at the end:
a[(new.stop - old.stop):] = 0
# [0 1 -1 -1 7 8 9 0 0 0]