配列の値を正規化しようとしている次のコードがありますm x n
(これはニューラル ネットワークへの入力として使用されます。ここm
で、トレーニング例n
の数と特徴の数です)。
ただし、スクリプトの実行後にインタープリターで配列を調べると、値が正規化されていないことがわかります。つまり、元の値のままです。array
これは、関数内の変数への割り当てが関数内でしか見られない ためだと思います。
この正規化を適切に行うにはどうすればよいですか? または、正規化関数から新しい配列を返す必要がありますか?
import numpy
def normalize(array, imin = -1, imax = 1):
"""I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)"""
dmin = array.min()
dmax = array.max()
array = imin + (imax - imin)*(array - dmin)/(dmax - dmin)
print array[0]
def main():
array = numpy.loadtxt('test.csv', delimiter=',', skiprows=1)
for column in array.T:
normalize(column)
return array
if __name__ == "__main__":
a = main()