2012-12-24 101 views

回答

2

如果A是形狀(m, n + 1)的numpy的陣列,你也有陣列mu和形狀(n,)s2保持平均值和除了第一個的每一列的方差,就可以做你的歸一化,如下所示:

A[:, 1:] = (A[:, 1:] - mu)/s2 

要展望笏繼續,您需要了解broadcasting如何工作。由於A[:, 1:]已經塑造(m, n)mus2形狀(n,),最後兩個都1S預先考慮到它們的形狀相匹配的第一個的尺寸,所以他們被視爲(1, n)陣列,並在算術運算的價值在他們的第一個也是唯一的行將廣播到到所有行。

如果你不這樣做,你的勁歌和方差陣列可以有效地計算

mu = (A[:, 1:].mean(axis=0) 
s2 = A[:, 1:].var(axis=0) 

對於您可能希望使用np.std方差平方採取ddof參數的優勢,看到docs

單獨注意,normalization通常除以標準差而不是方差。

+0

謝謝。我知道'mean'和'var'方法,但我認爲它們只適用於小數據集。對於大型數據集,我必須用'MapReduce'來實現它們。在這種情況下,我需要「映射」一行,以便返回的「數組」被標準化(忽略第一列)。 – satoru

+0

'np.concatenate((X [0],(X [1] - mean)/ std_var)'是我想要的;) – satoru

相關問題