2016-02-06 5 views
1

У меня есть следующий Numpy массив:как нормализовать Numpy массив в Python

from sklearn.decomposition import PCA 
from sklearn.preprocessing import normalize 
import numpy as np 

# Tracking 4 associate metrics 
# Open TA's, Open SR's, Open SE's 
associateMetrics = np.array([[111, 28, 21], 
    [ 27, 17, 20], 
    [ 79, 23, 17], 
    [185, 125, 50], 
    [155, 76, 32], 
    [ 82, 24, 17], 
    [127, 63, 33], 
    [193, 91, 63], 
    [107, 24, 17]]) 

Теперь я хочу, чтобы нормализовать все «столбца» так, что значения между 0 и 1. То, что я имею в виду, что значения в 1-й колонке, например, должны быть между 0 и 1.

Как это сделать?

normed_matrix = normalize(associateMetrics, axis=1, norm='l1') 

выше дает мне построчно нормализации

+0

Ты пробовал? – Goyo

+0

Вы хотите разделить каждый столбец максимум? –

+0

Я думаю, что у меня есть мой ответ. Я попытался поставить ось = 0, и это сработало. документация не ясна для меня, я думаю ... http: //scikit-learn.org/stable/modules/generated/sklearn.preprocessing.normalize.html – Rookie

ответ

1

Я был в состоянии сделать это с помощью следующего: «Будешь вышеуказанную работу»

normalized_metrics = normalize(associateMetrics, axis=0, norm='l1') 
+1

Ось в scipy определяет размер, над которым вы работаете. Для 2D-данных (matrxi) ось = 0 означает по строкам, а ось = 1 - по столбцам. http://docs.scipy.org/doc/numpy-1.10.1/glossary.html – javad

+0

спасибо! Если я могу задать дополнительный вопрос. Как я могу умножить каждый столбец на разные значения скаляра? Я хочу назначить разные веса каждому столбцу. Должен ли я делать это после нормализации? Если да, то как? извините, я немного новичок в python – Rookie

+1

Вы можете использовать numpy.multiply для умножения по весу вектора веса по вашей матрице. Возможно, 'np.multiply (v, m)' где 'v' - ваш вектор, а' m' - ваша матрица. http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.multiply.html – javad