2016-01-06 13 views
0

我有,我想攀登,以满足特定的标准差和平均需求值的列表。具体来说,除了所有值都大于0的数据集之外,我希望标准化的数据集标准化为0且标准差为1;这些我想缩放,使得它们的平均值是1应如何列表的值进行缩放以使它们符合标准偏差和平均要求是什么?

什么是做这种类型的事情在Python的好办法?

+0

我认为你试图解决一个方程组,以满足特定的值。你应该搜索“python goal seek”或“python equation solver”。 –

回答

2

如果您使用的是Python中的数据,您将希望使用科学堆栈(请参见here),特别是numpy,scipypandas。什么你要找的是zscore,这是一个足够常见的操作,它的内置到scipyscipy.stats.zscore

从非零均值和非单位STDDEV随机阵列开始:

>>> import numpy as np 
>>> import scipy.stats 
>>> data = np.random.uniform(0, 100, 10**5) 
>>> data.mean(), data.std() 
(49.950550280158893, 28.910154760235972) 

我们可以重新归一化:

>>> renormed = scipy.stats.zscore(data) 
>>> renormed.mean(), renormed.std() 
(2.0925483568134951e-16, 1.0) 

和移位,如果我们想:

>>> if (data > 0).all(): 
...  renormed += 1 
...  
>>> renormed.mean(), renormed.std() 
(1.0000000000000002, 1.0) 

我们可以手动做到这一点,当然:

>>> (data - data.mean())/data.std() 
array([-0.65558504, 0.24264144, -0.1112242 , ..., -0.40785103, 
     -0.52998332, 0.10104563]) 

(注意,默认情况下,这使用delta的自由度为0,即分母是N.如果您想要N-1,则通过ddof=1)。

相关问题