首页 > 解决方案 > 在均衡块之间均匀拆分数据

问题描述

考虑以下代码

import numpy as np
import matplotlib.pyplot as plt
import math

p=2
T=12
n=10
m=2

beta   = np.zeros((p,T))
beta_b = {}
for i in range(m+1):
    beta_b["beta_" + str(i)] = np.random.normal(0,1,p)
for t in range(T):
    if t < math.floor(T/(m+1)):
        beta[0:p,t] =  beta_b["beta_" + str(0)]
    elif math.floor(T/(m+1))<=t<math.floor(2*(T/(m+1))):
        beta[0:p,t] =  beta_b["beta_" + str(1)]
    else:
        beta[0:p,t] =  beta_b["beta_" + str(2)]

代码主要做的是首先创建一个大小为 2 乘以 12(p 乘以 T)的矩阵并用零填充它。然后目的是用相同的向量均匀地填充矩阵,即如果我们有 m=2(如代码所示),则矩阵被分成 3 个不同的部分。请注意,我首先创建了一个字典 beta_b,其中包含稍后要填充的 m+1 个片段。因此,在我的玩具示例中,我有 m=2,T=12,即 3 个尺寸为 4 的块。如果我们专注于 t<4 时出现的第一块,那么beta[0:p,0]直到beta[0:p,3]与 beta_1 相等。然后我们继续进行第二个部分,该部分开始于beta[0:p,4]直到 beta[0:p,7]并等于 beta_2。最后一块开始beta[0:p,8]直到结束,这与最终的 beta_3 相等。

我的问题是,对于任何选择m,有没有办法巧妙地编写代码而无需添加许多elif语句?如果 m=4,我需要手动添加一条elif语句,告诉 python 我正在考虑什么块。

标签: pythondatabaseloopssplitblock

解决方案


推荐阅读