传感器每秒钟产生一次读数,持续五秒钟。我试图使用函数np.mean
计算五个传感器读数的平均值(即sensor1_t1
到sensor1_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)
答案 0 :(得分:3)
您需要将类似数组的对象传递给np.mean
的a
参数。尝试:
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.ndarray
)numpy.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就可以完成其余工作。