ここでナンピー初心者。ニューラルネットワークへの入力を正規化(別名、機能スケーリング、標準化)しようとしています。私は線形スケーリングを行っているだけで、使用している式は次のとおりです。
I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)
ここで、I はスケーリングされた入力値、Imin と Imax はスケーリングされた値の目的の最小範囲と最大範囲、D は元のデータ値、Dmin と Dmax は元のデータ値の最小範囲と最大範囲です。numpy 配列を受け取り、すべての値が正規化された配列を返す python メソッドが必要です。これが私が今のところ考えていることです。
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 を引いた新しい一時配列を作成しますか? これが正しい用語かどうかはわかりませんが、これは「ベクトル化された」アプローチだと思いますか?
アップデート
これで配列を変更する方法はありますか? つまり、配列のコピーを返すのではなく、関数に配列を取り、元の配列を変更させますか?