В thinkdsp.py нет ничего сложного. Большинство предоставляемых им функций представляют собой оболочки для функций из NumPy и SciPy.
Основными классами thinkdsp являются Signal, Wave и Spectrum. Получив сигнал, вы можете создать волновой сигнал. Учитывая волну, вы можете создать спектр, и наоборот. Эти отношения показаны на рисунке.

Класс Wave содержит три атрибута:
ys— массив NumPy, который содержит значения амплитуды сигнала;ts— это массив времени, в которые сигнал определен (дискретизирован);framerate— количество отсчетов в единицу времени.
Единицей времени обычно являются секунды, но это не обязательно.
Класс Wave также предоставляет три свойства только для чтения:
start(начало)end(окончание)duration(продолжительность)
Если вы измените ts, эти свойства также изменятся соответствующим образом.
Чтобы изменить волну, вы можете получить прямой доступ к ts и ys. Например:

Первая строка масштабирует волну в 2 раза, делая ее громче. Вторая строка сдвигает волну во времени, заставляя ее стартовать на 1 секунду позже.
Также класс Wave обладает другими общими методами. Например, те же две трансформации с волной можно записать следующим образом:

