在参数中使用比较运算符的numpy mean

时间:2017-02-09 15:04:27

标签: python numpy

我遇到了一个类似于以下内容的Python代码:

a = np.array([1,2,3,4,5,6,7])
a
array([1, 2, 3, 4, 5, 6, 7])
np.mean(a)
4.0
np.mean(a <=3)
0.42857142857142855
np.mean(a <=4)
0.5714285714285714

我不明白比较运算符的含义是什么? numpy的mean()函数实现的任何指针都会很好。

谢谢。

2 个答案:

答案 0 :(得分:3)

如果您编写a <= 3,则构造一个包含值的数组:

array([ True,  True,  True, False, False, False, False], dtype=bool)

由于True的值为1.0(或1)且False的值为0.0(或0),因此会计算{ {1}}在布尔值列表上。因此换句话说,它将计算该值所占的元素数量,而不是元素总数。

mean本身没有特定的行为:如果您提供mean的列表,它只会评估Foo并将其划分为长度列表,和:

Foo1+Foo2+...Foon

因此,>>> False+True 1 >>> True+True 2 的结果为3/7(前三个元素在{7}元素上为np.mean(a <=3))和<= 3 4/7。

答案 1 :(得分:2)

您可能想要计算小数字的平均值。

这是方法:

In [2]: a=arange(8)

In [3]: b= a<=3

In [4]: b  # condition
Out[4]: array([ True,  True,  True,  True, False, False, False, False], dtype=bool)

In [5]: a[b] #selection
Out[5]: array([0, 1, 2, 3])

In [6]: a[b].mean()
Out[6]: 1.5