Skip to main content
 首页 » 编程设计

python之NumPy:计算数组中某些元素的平均值

2025年05月04日11lyj

假设一个 (1-d) 数组,是否可以在不循环的情况下计算给定大小不同的组的平均值?而不是

avgs = [One_d_array[groups[i]].mean() for i in range(len(groups))] 

有点像

avgs = np.mean(One_d_array, groups) 

基本上我想这样做:

M = np.arange(10000) 
np.random.shuffle(M) 
M.resize(100,100) 
groups = np.random.randint(1, 10, 100) 
 
def means(M, groups): 
    means = [] 
    for i, label in enumerate(groups): 
        means.extend([M[i][groups == j].mean() for j in set(p).difference([label])]) 
    return means 

运行时间

%timeit means(M, groups) 
100 loops, best of 3: 12.2 ms per loop 

提速10倍左右就已经很棒了

请您参考如下方法:

无论你是否看到循环,循环都是存在的。
这是一种方法,但循环只是隐藏在对 map 的调用中。 :

In [10]: import numpy as np 
 
In [11]: groups = [[1,2],[3,4,5]] 
 
In [12]: map(np.mean, groups) 
Out[12]: [1.5, 4.0]