Skip to main content
 首页 » 编程设计

python之如何制作一个连续包含 numpy 数组的另一个元素的循环以计算运行方差

2025年05月04日16lexus

我将数字存储在数组中,如 [1, 6, 12, 4...]。我想做一个计算,其中每个新迭代将使用数组的一个元素。

  • 例如,第一次迭代将仅使用数字 1。
  • 第二次迭代将使用1 和6。
  • 第三个将使用 1、6 和 12,依此类推。

任何对 Python 中的统计/方差感兴趣的人的更多详细信息:

我想计算数组中数据的运行方差。在 Python 中获取整个数组的方差似乎很简单。所以我会把我的数组放在循环中直到元素 i 。随着循环的进行和数组的“增长”,我将计算数组的方差。如果有人知道执行此操作的更好方法,我将不胜感激。

请您参考如下方法:

根据您想要的效率,您可以采用不同的方式。

最直接的是使用切片求和到当前值:

ls = [1, 6, 12, 4] 
 
for i in range(len(ls)): 
    print(sum(ls[:i+1])) 

但是您会发现,随着时间的推移,累加器模式会表现得更好。下面的代码删除了对 sum 的调用,将循环的计算复杂度降低到 O(n)。它应该在包含数十万个项目的大型数据集上执行得明显更快:

ls = [1, 6, 12, 4] 
 
total = 0 
for item in ls: 
    total += item 
    print(total) 

这是一个很常见的模式,可以很方便地创建一个可重用的函数。下面的代码可以让您用其他行为替换 foo 行为:

def accumulate(fn, iterable): 
    total = 0 
    for i, item in iterable: 
        total = fn(i, item, total) 
 
def foo(i, item, total): 
    print(f'The running total is {total}.') 
    return total + 2 * item - i 
 
accumulate(foo, [1, 6, 12, 4]) 

>>> The running total is 2. 
>>> The running total is 13. 
>>> The running total is 35. 
>>> The running total is 40.