【问题标题】:How to average several readings in python?如何在python中平均几个读数?
【发布时间】:2017-11-15 01:20:46
【问题描述】:

传感器每隔一秒生成一个读数,持续五秒。我试图使用函数np.mean 来计算五个传感器读数的平均值(即sensor1_t1sensor1_t5),但是它不起作用。

你能帮我解决这个问题吗?

谢谢。

sensor1_t1 = BridgeValue(0) * 274.0 - 2.1
sleep(1)
sensor1_t2 = BridgeValue(0) * 274.0 - 2.1
sleep(1)
sensor1_t3 = BridgeValue(0) * 274.0 - 2.1
sleep(1)
sensor1_t4 = BridgeValue(0) * 274.0 - 2.1
sleep(1)
sensor1_t5 = BridgeValue(0) * 274.0 - 2.1
sleep(1)

# my code - not working
#avg_sensor1 = np.mean(sensor1_t1, sensor1_t2, sensor1_t3, sensor1_t4, sensor1_t5)

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您需要将类似数组的对象传递给np.meana 参数。试试:

    avg_sensor1 = np.mean([sensor1_t1, sensor1_t2, sensor1_t3, sensor1_t4, sensor1_t5])
    

    当您需要将 5 个参数作为一个类似数组的对象传递时,您当前正在传递它们。

    换句话说,np.mean 的语法是:

    numpy.mean(a, axis=None, dtype=None, out=None, ...

    您当前调用函数的方式是传递 5 个位置参数。这些被解释为单独的参数:

    • sensor1_t1 传递给 a
    • sensor1_t2 传递给 axis
    • sensor1_t3 传递给 dtype

    ...等等。

    请注意,我建议的语法传递了list,这是一种被认为是“类数组”的结构。更多关于 here 如果你有兴趣。

    【讨论】:

      【解决方案2】:

      使用 Numpy 数组更容易做到这一点。比如:

      import numpy as np
      
      N = 5
      sensor1 = np.zeros((N,), dtype=float)
      
      for i in range(N):
          sensor1[i] = BridgeValue(0) * 274.0 - 2.1
          sleep(1)
      
      average = np.mean(sensor1)
      

      【讨论】:

      • 我正在考虑使用 np.empty 基于我从别人那里学到的东西。你能解释一下你为什么使用 np.zeros 吗?我假设 (N,) 正在将新条目附加到数组中?!谢谢。
      • np.zeros((N,) 创建一个零数组,长度为N。 (技术上是一维数组。)然后修改循环中的每个值。因此,当i=1 时,您将BridgeValue(0) * 274.0 - 2.1 分配给sensor[1](数组中的第二个条目,因为它是0 索引的)。因此,您可以使用np.emptynp.zeros;它们都起到占位符的作用。
      【解决方案3】:

      因为 numpy 主要用于数组(尤其是numpy.ndarraynumpy.mean 需要一个数组作为它的第一个参数。但是您不需要创建 ndarray,您只需将 np.mean(sensor1_t1, sensor1_t2, sensor1_t3, sensor1_t4, sensor1_t5) 更改为 np.mean([sensor1_t1, sensor1_t2, sensor1_t3, sensor1_t4, sensor1_t5]),然后 numpy 将负责其余的工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-23
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多