Python 如何将 n 个元素组从列表转换为它们的平均值
Python how transform group of n elements from list to their mean
我有一个列表:
l = [1,2,3,4,5,6,7,8,9,10,11]
我想从 3 个元素的片段中求出平均值。如果最后一组元素不能分成 3 份,则取剩余部分的平均值:
new = [2,5,8,10.5]
最好的方法是什么?在计算速度方面(因为明显的 for 循环对于大列表来说会很慢)
谢谢
1.使用 lists
和 numpy.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 arrays
和 numpy.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 |
+-------------+----------------+
第二种方法比第一种方法快很多。因此,我强烈建议您使用第二种方法。
我有一个列表:
l = [1,2,3,4,5,6,7,8,9,10,11]
我想从 3 个元素的片段中求出平均值。如果最后一组元素不能分成 3 份,则取剩余部分的平均值:
new = [2,5,8,10.5]
最好的方法是什么?在计算速度方面(因为明显的 for 循环对于大列表来说会很慢)
谢谢
1.使用 lists
和 numpy.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 arrays
和 numpy.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 |
+-------------+----------------+
第二种方法比第一种方法快很多。因此,我强烈建议您使用第二种方法。