Вычислить дискретную разницу n-го порядка: TypeError: неподдерживаемые типы операндов для -: 'list' и 'list' - PullRequest
0 голосов
/ 18 сентября 2018

Я получаю следующую ошибку, когда пытаюсь вычислить дискретную разницу n-го порядка в двумерном списке.

Ошибка:

TypeError: unsupported operand type(s) for -: 'list' and 'list'

Код

import numpy as np

single_waveform = [[219.09683883101852, 219.16303915895062, 219.2642264660494, 219.34081790123457, 219.51174768518518, 219.5255039544753, 219.6387533757716, 219.78383632330247], [219.9265668402778], [220.0330362654321, 220.02853780864197, 219.95662519290124]]

sample_rate = 200
derivative_1 = np.diff(single_waveform, n=1) * float(sample_rate)

print(derivative_1)

Как можно решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Я предполагаю, что single_waveform на самом деле содержит более одного сигнала, но в данном случае 3. Чем вы можете попробовать:

import numpy as np

single_waveform = [[219.09683883101852, 219.16303915895062, 219.2642264660494, 219.34081790123457, 219.51174768518518, 219.5255039544753, 219.6387533757716, 219.78383632330247], [219.9265668402778], [220.0330362654321, 220.02853780864197, 219.95662519290124]]

sample_rate = 200
derivative_1 = [np.diff(sw, n=1) * float(sample_rate) for sw in single_waveform]

print(derivative_1)

Это то, что вы хотели сделать?

0 голосов
/ 18 сентября 2018

Массивы должны иметь одинаковые размеры для этой операции.Одно из решений:

import numpy as np

single_waveform = [[219.09683883101852, 219.16303915895062, 219.2642264660494, 219.34081790123457, 219.51174768518518, 219.5255039544753, 219.6387533757716, 219.78383632330247], [219.9265668402778], [220.0330362654321, 220.02853780864197, 219.95662519290124]]

sample_rate = 200

derivative_1 = []

for array in single_waveform:
    np.diff(array, n=1) * float(sample_rate)
    derivative_1.append(np.diff(array,n=1))

print(derivative_1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...