Numpy изменить массив на месте?

У меня есть следующий код, который пытается нормализовать значения массива 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()
26
задан User 13 April 2012 в 23:10
поделиться