我有一个长度(L)的数据集,我将其命名为“数据”。
data=raw_data.iloc[:,0]
我从“数据”中随机生成了2000个样本系列,并将其命名为“重采样”,以使len = 2000的NumPy矩阵和“数据”的cols = L。
resamples=[np.random.choice(data, size=len(data), replace=True) for i in range (2000)]
下面的代码使用单个数组“ data”显示Scipy.stats中的两个操作。现在,我需要通过定义一个for循环,对每个样本系列(2000行)执行相同的操作。面临的挑战是,第一步需要计算两个参数(位置和比例),应该将它们用于每一行以执行下一个参数。我的知识不足以定义这样的for循环。我想知道是否有人可以帮助我。
loc, scale=stats.gumbel_r.fit(data)
return_gumbel=stats.gumbel_r.ppf([0.9999,0.9995,0.999],loc=loc, scale=scale)
答案 0 :(得分:1)
描述有些不清楚,但我认为您只需要:
alist = []
for data in resamples:
loc, scale=stats.gumbel_r.fit(data)
return_gumbel=stats.gumbel_r.ppf([0.9999,0.9995,0.999],loc=loc, scale=scale)
alist.append(return_gumbel)
arr = np.array(alist)
您还可以先创建arr
,然后将return_gumbel
分配给相应的行,但是列表追加的速度大致相同。循环也可以写成列表理解。
有人谈论vectorizing
,但是考虑到计算的复杂性,我怀疑这样做是否可行-至少在不深入研究那些stats
函数的细节的情况下,这是不可行的。在numpy
中,vectorizing
的意思是编写一个函数,使其一次可处理数组的所有行,并以已编译的numpy代码执行操作。