Lsk1454669343 2024-04-28 16:19 采纳率: 0%
浏览 79

关于TypeError: unsupported operand type(s) for +: 'NoneType' and 'float'如何处理


def plot_results_multiple(predicted_data, true_data, prediction_len):
    fig = plt.figure(facecolor='white')
    ax = fig.add_subplot(111)
    ax.plot(true_data, label='True Data')
    plt.legend()
    for i, data in enumerate(predicted_data):
        padding = [None for p in range(i * prediction_len)]
        plt.plot(padding + data, label='Prediction')
    plt.show()

遇到的问题


TypeError: unsupported operand type(s) for +: 'NoneType' and 'float'
  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-28 16:19
    关注

    引自免费微信小程序:皆我百晓生

    在提供的代码中,错误提示表明在执行padding + data操作时,遇到了一个NoneType对象与浮点数相加的情况。这是因为padding是一个全为None值的列表,而你在尝试将这个列表与data(一个包含实际数据的列表)拼接起来。

    要解决这个问题,你需要确保padding列表中的元素是可与data中的元素相加的类型。在这种情况下,由于data中的元素是浮点数,我们需要将padding列表中的元素改为0而不是None。修改后的代码如下:

    import matplotlib.pyplot as plt
    
    def plot_results_multiple(predicted_data, true_data, prediction_len):
        fig = plt.figure(facecolor='white')
        ax = fig.add_subplot(111)
        
        # 修改 padding 为全零列表,以便与 data 进行拼接
        padding = [0.0 for _ in range(i * prediction_len)] 
    
        ax.plot(true_data, label='True Data')
        plt.legend()
    
        for i, data in enumerate(predicted_data):
            # 使用修改后的 padding
            plt.plot(padding + data, label=f'Prediction {i+1}')
            
        plt.show()
    

    这段代码会创建一个全零的padding列表,并根据索引i动态调整其长度。然后,它将这个列表与每个预测数据data拼接在一起,这样就不会再发生TypeError了。同时,为了使图例更具描述性,我将标签更改为f'Prediction {i+1}'。如果你有多个预测数据,这将会显示为Prediction 1, Prediction 2, 等等。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月28日