Mam następujący kod, który próbuje znormalizować wartości tablicy m x n
(Będzie on używany jako wejście do sieci neuronowej, gdzie m
jest liczbą przykładów treningu, a n
jest liczbą funkcji).Numpy modyfikować macierz w miejscu?
Jednak, gdy sprawdzam tablicę w interpretera po uruchomieniu skryptu, widzę, że wartości nie są znormalizowane; to znaczy, że nadal mają oryginalne wartości. Sądzę, że dzieje się tak dlatego, że przypisanie zmiennej array
do funkcji jest widoczne tylko w funkcji.
Jak mogę wprowadzić tę normalizację? Czy muszę zwrócić nową tablicę z funkcji normalizacji?
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()
co to jest "% timeit"? To wygląda interesująco, czy jest wbudowane? – User
Używana tutaj wersja jest wbudowana tylko w [ipython] (http://ipython.org/). Ale jest oparty na funkcji 'timeit' w module [' timeit'] (http://docs.python.org/library/timeit.html#module-timeit). – senderle
Ah w końcu spojrzał na ipython. Zabawne, zawsze kojarzyłem go z ironpythonem, omyłkowo teraz widzę. – User