2017-02-25 3 views
0

Wie binäre Darstellung eines numpy-Arrays zu seinem entsprechenden Maximalwert in einer Zeile über einem Schwellenwert. Wenn der maximale Wert für den Array-Zeilenwert kleiner als der Schwellenwert ist, sollte Spalte 1 gleich eins sein.Wie erfolgt die Binärisierung von Arrays mit einem Schwellenwert?

a=np.array([[ 0.01, 0.3 , 0.6 ],                              
      [ 0.2 , 0.1 , 0.4 ],                              
      [ 0.7 , 0.1 , 0.3 ],                              
      [ 0.2 , 0.3 , 0.5 ],                              
      [ 0.1 , 0.7 , 0.3 ],                              
      [ 0.1 , 0.5 , 0.8 ]])  


#required output with thresold row.max>=0.6 else column 1 should be 1 
    np.array([[ 0.0 , 0.0 , 1.0 ],                              
      [ 0.0 , 1.0 , 0.0 ],                              
      [ 1.0 , 0.0 , 0.0 ],                              
      [ 0.0 , 1.0 , 0.0 ],                              
      [ 0.0 , 1.0 , 0.0 ],                              
      [ 0.0 , 0.0 , 1.0 ]])  

Antwort

1

Eine Lösung: Verwenden Sie argmax und Indexierung

am = a.argmax(axis=-1) 
am[a[np.arange(len(a)), am] < 0.6] = 1 
out = np.zeros_like(a) 
out[np.arange(len(a)), am] = 1 
out 
array([[ 0., 0., 1.], 
     [ 0., 1., 0.], 
     [ 1., 0., 0.], 
     [ 0., 1., 0.], 
     [ 0., 1., 0.], 
     [ 0., 0., 1.]]) 
Verwandte Themen