import numpy as np
def my_norm(a):
ratio = 2/(np.max(a)-np.min(a))
#as you want your data to be between -1 and 1, everything should be scaled to 2,
#if your desired min and max are other values, replace 2 with your_max - your_min
shift = (np.max(a)+np.min(a))/2
#now you need to shift the center to the middle, this is not the average of the values.
return (a - shift)*ratio
my_norm(data)
3条答案
按热度按时间oyxsuwqo1#
这不是一个简单的计算吗?除以最大值的一半,再减去1:
vxqlmq5t2#
您可以在sklearn.preprocessing.StandardScaler中使用fit_transform方法。此方法将从数据中删除均值,并将数组缩放为单位方差(-1,1)
如果您打印出数据,您现在将拥有:
m3eecexj3#
下面的函数应该可以执行您想要的操作,而不考虑输入数据的范围,也就是说,如果您有负值,它也可以工作。