如何在python中平均几个读数?

时间:2017-11-14 16:28:52

标签: python numpy

传感器每秒钟产生一次读数,持续五秒钟。我试图使用函数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)

3 个答案:

答案 0 :(得分:3)

您需要将类似数组的对象传递给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

答案 1 :(得分: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)

答案 2 :(得分:0)

因为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就可以完成其余工作。