【问题标题】:How to average certain sized subsections of a list in python?如何平均python中列表的某些大小的子部分?
【发布时间】:2023-04-07 15:17:01
【问题描述】:

我想从一个特定大小的列表(或数组)中取出咬合,返回该咬合的平均值,然后继续下一个咬合,并从头再来。有没有办法在不编写 for 循环的情况下做到这一点?

In [1]: import numpy as np
In [2]: x = range(10)
In [3]: np.average(x[:4])
Out[3]: 1.5
In [4]: np.average(x[4:8])
Out[4]: 5.5
In [5]: np.average(x[8:])
Out[5]: 8.5

我正在寻找类似 np.average(x[:bitesize=4]) 的东西来返回:[1.5,5.5,8.5]。

我已经查看了切片数组和遍历数组,但我还没有找到任何可以做我想做的事情的事情。

【问题讨论】:

  • 为什么不想写一个for循环呢?当人们提出问题试图在没有任意控制结构的情况下做某事时,通常表明他们处于不幸的“尽可能多地做同一条线”的心态。如果您担心的是性能,那么就这么说吧,并举例说明您正在处理的数据大小,以便人们知道要测试什么。
  • 我可以编写一个 for 循环,但这与我为循环编写的许多其他列表或数组操作的感觉相同,直到我发现您可以单步执行数组。于是我问。此外,我将编写的 for 循环将声明一个新列表,启动一个 for 循环,运行一个 if 语句(或两个),将值附加到我的新列表中,可能还有更多。因此,一个人已经回答的 for 循环对我来说既清楚又不悲剧,就我的编程意义而言。

标签:
python
list
average