代码之家  ›  专栏  ›  技术社区  ›  Md. Rezwanul Haque

计算第n阶离散差分:typeerror:不支持-:'list'和'list'的操作数类型

  •  1
  • Md. Rezwanul Haque  · 技术社区  · 7 年前

    当我试图计算第n阶离散差A 2-D列表时,会出现以下错误。

    错误:

    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 回复  |  直到 7 年前
        1
  •  1
  •   B. Biehler    7 年前

    我假设单个_波形实际上包含多个波形,但在本例中是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)
    

    这就是你想做的吗?

        2
  •  0
  •   Júlio Cesar Pereira Rocha    7 年前

    对于此操作,数组需要具有相同的维度。 一种解决方案是:

    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)