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