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