python - 在均衡块之间均匀拆分数据
问题描述
考虑以下代码
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 我正在考虑什么块。
解决方案
推荐阅读
- strapi - 安装 Strapi 时出现错误
- javascript - 我想在下图中使用 for 循环,我添加了 for 循环,但它不起作用
- c# - ASP.NET Core 创建自定义输入标签助手
- c# - nuget 包与其引用的 nuget 包之间的不同版本
- selenium - 无法通过元素包含的特定文本找到带有硒的元素,当我想通过特定文本+变量搜索它时
- python - 合并两个文件后,一个 x 值在图中重复两次
- python - 如何训练神经网络将整数转换为罗马数字?
- javascript - 用于范围输入的 SVG 弧形滑块
- c# - 无法跟踪实体类型“文件夹”的实例,因为已在跟踪另一个具有键值“{Id}”的实例
- javascript - 比较两个嵌套的 JSON 结构