我遇到了一个类似于以下内容的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()函数实现的任何指针都会很好。
谢谢。
答案 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