gpt4 book ai didi

python - 用于计算向量在不同点拆分的方差的向量化

转载 作者:行者123 更新时间:2023-12-04 15:56:23 28 4
gpt4 key购买 nike

我有一个一维数组 arr,我需要计算从位置 0 开始的所有可能的连续子向量的方差。使用 for 循环可能更容易理解:

np.random.seed(1)
arr = np.random.normal(size=100)

res = []
for i in range(1, arr.size+1):
subvector = arr[:i]
var = np.var(subvector)
res.append(var)

有什么方法可以不用 for 循环来计算 res 吗?

最佳答案

是的,由于 var = sum_squares/N - mean**2mean = sum/N,您可以通过 cumsum 来获取总和:

cumsum = np.cumsum(arr)
cummean = cumsum/(np.arange(len(arr)) + 1)
sq = np.cumsum(arr**2)

# correct the dof here
cumvar = sq/(np.arange(len(arr))+1) - cummean**2

np.allclose(res, cumvar)
# True

关于python - 用于计算向量在不同点拆分的方差的向量化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69828099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com