Numpy新手在这里。我试图将我的输入规范化(也称为功能缩放,标准化)到神经网络。我只是做线性缩放和我使用的公式是:数组和标量的Numpy数学?
I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)
其中I是缩放的输入值,伊明和IMAX是所需分钟,经缩放的值的最大范围内,d是原始数据值以及Dmin和Dmax是原始数据值的最小和最大范围。我想要一个python方法,它接受一个numpy数组并返回一个数组,其中所有的值都被标准化了。这是我到目前为止的想法。
def get_normalized_values(array):
"""I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)"""
imin = -1
imax = 1
dmin = array.amin()
dmax = array.amax()
normalized = imin + (imax - imin)*(array - dmin)/(dmax - dmin)
return normalized
我的问题是这个工作吗?或者我必须遍历数组中的每个元素并执行数学运算?你能用数组和标量做这样的数学吗?也就是说,array - dmin
会创建一个新的临时数组,其中每个值都减去了dmin?不知道这是否是正确的术语,但我认为这是一种“矢量化”方法?
更新
是否有办法有这个修改到位数组?这不是返回数组的副本,让函数获取数组并修改原始数组?
像这样的事情通常工作正常,只是尝试它。有一点是,氨和amax应该是最小和最大。或者argmin/argmax。 – 2012-04-13 21:28:09