2017-06-02 9 views
1

Meine Daten sind numpy ndarray mit Form (2,3,4) folgende: Ich habe versucht, 0-1 Maßstab für jede Spalte durch Sklearn Normalisierung zu normalisieren.Normalisieren numpy ndarray Daten

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,) 

jedoch fange ich den Fehler:

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

Wie löse ich dieses Problem?

Vielen Dank.

Antwort

1

Es scheint scikit-learn erwartet ndarrays mit höchstens zwei Dims. Also, es zu lösen, um 2D, ihn an normalize neu zu gestalten wäre, die uns gibt einen 2D Array, das wieder zur ursprünglichen Form umgestaltet werden könnte -

from sklearn.preprocessing import normalize 

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

Alternativ ist es viel einfacher mit NumPy, die funktionieren gut mit generische ndarrays -

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

Vielen Dank !! Der obige Code gilt jedoch nicht für die spaltenweise Spalte, sondern für die gesamten Daten. Welche Option sollte angewendet werden? –

+0

@ChrisJoo Nicht sicher, was Sie von Spalte zu Spalte meinen. Vielleicht meinst du damit entlang Achse = 1 statt Achse = 0? – Divakar

+0

z. Die erste Spalte [[1, 2, 3], [4, 5, 6]] sollte [[0.1667, 0.3333, 0.5000], [0.6667, 0.8333, 1.0000]] und 2. Spalte (2, 2, 2, 2) sein , 2, 2) sollte [1, 1, 1, 1, 1, 1] sein. –

Verwandte Themen