1
我試圖通過對每一行做(X - means)/variance
來規範矩陣。如何將一列和一個矩陣組合成一個更大的具有`numpy`的矩陣?
因爲我與MapReduce
實現這一點,我先計算手段和每一列的標準方差,然後map
每行有:
matrix.map(lambda X: (X - means)/variance)
但我想忽略每行X
的第一個元素,這是我的目標列只包含1和0。
我該怎麼做?
我試圖通過對每一行做(X - means)/variance
來規範矩陣。如何將一列和一個矩陣組合成一個更大的具有`numpy`的矩陣?
因爲我與MapReduce
實現這一點,我先計算手段和每一列的標準方差,然後map
每行有:
matrix.map(lambda X: (X - means)/variance)
但我想忽略每行X
的第一個元素,這是我的目標列只包含1和0。
我該怎麼做?
如果A
是形狀(m, n + 1)
的numpy的陣列,你也有陣列mu
和形狀(n,)
的s2
保持平均值和除了第一個的每一列的方差,就可以做你的歸一化,如下所示:
A[:, 1:] = (A[:, 1:] - mu)/s2
要展望笏繼續,您需要了解broadcasting如何工作。由於A[:, 1:]
已經塑造(m, n)
和mu
和s2
形狀(n,)
,最後兩個都1S預先考慮到它們的形狀相匹配的第一個的尺寸,所以他們被視爲(1, n)
陣列,並在算術運算的價值在他們的第一個也是唯一的行將廣播到到所有行。
如果你不這樣做,你的勁歌和方差陣列可以有效地計算
mu = (A[:, 1:].mean(axis=0)
s2 = A[:, 1:].var(axis=0)
對於您可能希望使用np.std
方差平方採取ddof
參數的優勢,看到docs 。
單獨注意,normalization通常除以標準差而不是方差。
謝謝。我知道'mean'和'var'方法,但我認爲它們只適用於小數據集。對於大型數據集,我必須用'MapReduce'來實現它們。在這種情況下,我需要「映射」一行,以便返回的「數組」被標準化(忽略第一列)。 – satoru
'np.concatenate((X [0],(X [1] - mean)/ std_var)'是我想要的;) – satoru