Python如何将一组n个元素从列表转换为它们的平均值



我有一个列表:

l = [1,2,3,4,5,6,7,8,9,10,11]

我想得到3个元素的分段的平均值。如果最后一组元素没有分成3,就取剩余元素的平均值:

new = [2,5,8,10.5]

最好的方法是什么?在计算速度方面(对于大列表,循环显然会很慢(

1。使用listsnumpy.mean:

import numpy as np
l = [1,2,3,4,5,6,7,8,9,10,11]
l = [l[x:x+3] for x in range(0,len(l),3)]
new = [np.mean(lst) for lst in l]
print(new)

输出:

[2.0, 5.0, 8.0, 10.5]

性能:

+-------------+----------------+
| List Length | Time Taken (s) |
+-------------+----------------+
|     1000    |      0.01      |
|    10000    |      0.05      |
|    100000   |      0.50      |
|   1000000   |      5.65      |
+-------------+----------------+

2.使用numpy arraysnumpy.mean

import numpy as np
l = np.array([1,2,3,4,5,6,7,8,9,10,11])
l = [l[x:x+3] for x in range(0,len(l),3)]
new = [np.mean(lst) for lst in l]
print(new)

输出:

[2.0, 5.0, 8.0, 10.5]

性能:

+-------------+----------------+
| List Length | Time Taken (s) |
+-------------+----------------+
|     1000    |      0.005     |
|    10000    |      0.03      |
|    100000   |      0.28      |
|   1000000   |      2.30      |
+-------------+----------------+

第二种方法比第一种方法快得多。因此,我强烈建议你采用第二种方法

最新更新