Seite 1 von 1

Numpy alle Werte <0 durch 0 ersetzen

Verfasst: Mittwoch 2. Februar 2011, 13:47
von mathman
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ß

Re: Numpy alle Werte <0 durch 0 ersetzen

Verfasst: Mittwoch 2. Februar 2011, 18:20
von 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]])

Re: Numpy alle Werte <0 durch 0 ersetzen

Verfasst: Mittwoch 2. Februar 2011, 18:32
von mathman
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