搜了一頓也沒有用numpy實現的,都是直接用學習框架實現好的函數。
我把z-score轉化成了np的矩陣運算。
def Normalize(raw_list):
np_data=np.array(raw_list)
length=len(raw_list)
#列均值
means=np.var(np_data,axis=0)
#列標準差
sigmas=np.std(np_data,axis=0)
#z-score轉化成矩陣運算
mean_metrix=np.tile(means,(length,1))
sigma_metrix=np.tile(sigmas,(length,1))
np_data=(np_data-mean_metrix)/sigma_metrix
return np_data
拿出其中一個維度驗證一下。
before=np.random.normal(loc=5,scale=5,size=1000)
before=np.tile(before.reshape(-1,1),(1,2))
print(before.shape)
after=Normalize(before)
# print(before.shape)
# print(after.shape)
plt.hist(before[:,0])
plt.show()
plt.hist(after[:,0])
plt.show()
行,概率密度函數看上去不變。