Numpy alle Werte <0 durch 0 ersetzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
mathman
User
Beiträge: 92
Registriert: Mittwoch 19. November 2008, 08:27
Wohnort: Magdeburg
Kontaktdaten:

Hallo,

ich möchte in einem Numpy Array alle Werte die kleiner als 0 sind durch 0 ersetzen.
Gibt es dafür eine Funktion oder muss ich mit einer Schleife alle Elemente darauf prüfen und dann ggf. ersetzen ?

Gruß
BlackJack

Das sind IMHO irgendwie Numpy-Grundlagen:

Code: Alles auswählen

In [16]: a = np.random.rand(5, 5)

In [17]: a
Out[17]: 
array([[ 0.11389652,  0.31919573,  0.5372963 ,  0.41104909,  0.398864  ],
       [ 0.93997402,  0.21477407,  0.79465177,  0.46625885,  0.26225517],
       [ 0.89957112,  0.90556205,  0.61022601,  0.01855248,  0.86618709],
       [ 0.4063321 ,  0.47959058,  0.28310037,  0.02436254,  0.74677059],
       [ 0.36401501,  0.80976033,  0.76651866,  0.84905229,  0.87081617]])

In [18]: a[a < 0.5] = 0

In [19]: a
Out[19]: 
array([[ 0.        ,  0.        ,  0.5372963 ,  0.        ,  0.        ],
       [ 0.93997402,  0.        ,  0.79465177,  0.        ,  0.        ],
       [ 0.89957112,  0.90556205,  0.61022601,  0.        ,  0.86618709],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.74677059],
       [ 0.        ,  0.80976033,  0.76651866,  0.84905229,  0.87081617]])
Benutzeravatar
mathman
User
Beiträge: 92
Registriert: Mittwoch 19. November 2008, 08:27
Wohnort: Magdeburg
Kontaktdaten:

Deine ist viel eleganter :)

Ich hab da so etwas gemacht :mrgreen:

Code: Alles auswählen

def mlf_cut(min, max):
  stop = min.shape[0] -1
  for i in range(stop):
    if min.item(i) > 0:
        min.itemset(i,0)
  stop = max.shape[0] -1
  for i in range(stop):
    if max.item(i) < 0:
        max.itemset(i,0)
  return min, max
Antworten