gpt4 book ai didi

python - 计算非零值的平均值

转载 作者:行者123 更新时间:2023-11-28 20:03:21 31 4
gpt4 key购买 nike

我有一个列表,其中的非零值的平均值。

E.G

 [2,2,0,0,0] -> 2    
[1,1,0,1,0] -> 1
[0,0,0,9,0] -> 9
[2,3,0,0,0] -> 2.5

目前我正在这样做:

list_ = [1,1,0,1,0]  
non_zero = [float(v) for v in list_ if v>0]
averge = sum(non_zero)/len(non_zero)

如何更有效地执行此操作?

最佳答案

如果你从一个numpy数组开始,你可以使用np.nonzero过滤数组,然后取平均值:

a = np.array([2,3,0,0,0])
average = a[np.nonzero(a)].mean()

您还可以通过 bool 索引进行过滤,这似乎更快:

average = a[a!=0].mean()

您还可以使用 a>0 轻松更改上述方法以过滤正值。

时间

使用以下设置:

a = np.random.randint(100, size=10**6)

我得到以下时间:

%timeit a[a!=0].mean()
100 loops, best of 3: 4.59 ms per loop

%timeit a[a.nonzero()].mean()
100 loops, best of 3: 9.82 ms per loop

关于python - 计算非零值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41603334/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com