我想从多元正态分布中随机抽取100x5数据帧。然后,我想对该列中的数据框中的每个值进行标准化。即我要替换:
其中
在向量x中,字母“ i”表示向量(1..5)的数量,“ j”表示第i个向量的第j个值。
我想做到没有任何循环。
到目前为止我的工作
import numpy
import pandas
#create some really numbers by randomly pressing keyboard
mean = [1, 2,3,4,5]
cov = [[1, 0,0,4,6], [0, 100,4,6,1],[12,14,1,0,13],
[41,5,0,3,6],[123,5,1,5,12]]
x_1, x_2, x_3, x_4, x_5 = numpy.random.multivariate_normal(mean, cov, 5000).T
#Create data frame
df=(pandas.DataFrame([x_1,x_2,x_3,x_4,x_5]))
#Try to do standardization
df_norm = (df - df.mean()) / (df.stdev())
我有问题:最后一行不起作用。对我来说很直观,它应该起作用,但是不起作用。你能帮我解决我的问题吗?
我还要另外一个问题。标准化之后,我想估算出哪个多元正态分布样本来自。我们有实现的功能吗?
答案 0 :(得分:0)
您需要按列进行操作。
df_norm = df.copy()
for col in df:
df_norm[col] = (df[col] - df[col].mean()) / df[col].std()