2017-06-02 75 views
1

我的數據是numpy ndarray與形狀(2,3,4)以下: 我已嘗試通過sklearn標準化規範每個列的0-1比例。正常化numpy ndarray數據

from sklearn.preprocessing import normalize 

x = np.array([[[1, 2, 3, 4], 
     [2, 2, 3, 4], 
     [3, 2, 3, 4]], 
     [[4, 2, 3, 4], 
     [5, 2, 3, 4], 
     [6, 2, 3, 4]]]) 

x.shape ==> (2,3,4) 

x = normalize(x, norm='max', axis=0,) 

不過,我趕上了錯誤:

ValueError: Found array with dim 3. the normalize function expected <= 2. 

我該如何解決這個問題?

謝謝。

回答

1

看來scikit-learn預計至多有兩個昏暗的ndarrays。因此,要解決這將是重塑到2D,將其提供給normalize這給了我們一個2D陣列,它可以重塑回了原形 -

from sklearn.preprocessing import normalize 

normalize(x.reshape(x.shape[0],-1), norm='max', axis=0).reshape(x.shape) 

另外,它與NumPy的更加簡單,與正常工作generic ndarrays -

x/np.linalg.norm(x, ord=np.inf, axis=0, keepdims=True) 
+0

非常感謝!但是,上面的代碼不適用於逐列,而是適用於整個數據。應該應用哪個選項? –

+0

@ChrisJoo不知道你是什麼意思的列到列。也許你的意思是沿軸= 1而不是軸= 0使用它? – Divakar

+0

例如。第1列[[1,2,3],[4,5,6]]應爲[[0.1667,0.33333,0.5000], [0.6667,0.8333,1.0000]]和第2列(2,2,2,2 ,2,2)應該是[1,1,1,1,1,1]。 –