Это ни в коем случае не легкая проблема. Я попытаюсь дать Вам обзор только.
то, Что Вы могли сделать, является чем-то как следующее:
преобразование Фурье А является в основном способом вычислить силу всех частот, существующих в сигнале. Если Вы сделаете это по "заблокированному" сигналу, частота удара, надо надеяться, будет самой сильной.
, Возможно, необходимо применить фильтр сначала, чтобы сфокусироваться на определенных частотах (как бас), которые обычно содержат большую часть информации о BPM.
d4 = dict(d1.items() + d2.items() + d3.items())
в качестве альтернативы (и предположительно быстрее):
d4 = dict(d1)
d4.update(d2)
d4.update(d3)
Предыдущий вопрос SO, из которого пришли оба этих ответа, находится здесь .
Вы можете использовать метод update ()
для создания новый словарь, содержащий все элементы:
dall = {}
dall.update(d1)
dall.update(d2)
dall.update(d3)
Или в цикле:
dall = {}
for d in [d1, d2, d3]:
dall.update(d)
Самый медленный и не работает в Python3: объедините элементы
и вызовите dict
в полученном списке:
$ python -mtimeit - s'd1 = {1: 2,3: 4}; d2 = {5: 6,7: 9}; d3 = {10: 8,13: 22} '\
'd4 = dict (d1.items () + d2.items () + d3.items ())'
100000 циклов, лучшее из 3: 4,93 мксек на цикл
Самый быстрый: полностью использовать конструктор dict
, затем одно обновление
:
$ python -mtimeit -s'd1 = {1: 2,3: 4} ; d2 = {5: 6,7: 9}; d3 = {10: 8,13: 22} '\
'd4 = dict (d1, ** d2); d4.update (d3) '
1000000 циклов, лучшее из 3: 1,88 мксек на цикл
Промежуточный результат: цикл update
вызывает изначально пустой dict:
$ python -mtimeit -s'd1 = {1: 2,3: 4}; d2 = {5: 6,7: 9}; d3 = {10: 8,13: 22} '\
'd4 = {}' 'для d в (d1, d2, d3): d4.update (d)'
100000 циклов, лучшее из 3: 2,67 мксек на цикл
Или, что то же самое, один copy-ctor и два обновления:
$ python -mtimeit -s'd1 = {1: 2,3: 4}; d2 = {5: 6,7: 9}; d3 = {10: 8,13: 22} '\
'd4 = dict (d1)' 'вместо d в (d2, d3): d4.update (d)'
100000 петель, лучшее из 3: 2,65 мксек на петлю
Я рекомендую подход (2) и особенно рекомендую избегать (1) (который также занимает O (N) дополнительной вспомогательной памяти для временной структуры данных конкатенированного списка элементов).