Ich habe ein Array myA
wie folgt aus:Wie werden nur die ersten n Elemente in einem numpy Array ersetzt, die größer als ein bestimmter Wert sind?
array([ 7, 4, 5, 8, 3, 10])
Wenn ich alle Werte ersetzen wollen, die val
0 von größer als ein Wert sind, habe ich einfach tun können:
myA[myA > val] = 0
, die das gibt mir gewünschter Ausgang (für val = 5
):
array([0, 4, 5, 0, 3, 0])
aber mein Ziel ist es zu ersetzen, nicht alle, sondern nur die erste n
Elemente dieses Arrays, die größer als ein Wert val
sind.
Also, wenn n = 2
mein gewünschtes Ergebnis würde wie folgt aussehen (10
das dritte Element ist und daher nicht ersetzt worden ist):
array([ 0, 4, 5, 0, 3, 10])
Eine einfache Implementierung sei:
import numpy as np
myA = np.array([7, 4, 5, 8, 3, 10])
n = 2
val = 5
# track the number of replacements
repl = 0
for ind, vali in enumerate(myA):
if vali > val:
myA[ind] = 0
repl += 1
if repl == n:
break
That funktioniert, aber vielleicht kann jemand mit einer intelligenten Art der Maskierung!
Sehr elegant, danke. Ich habe es vorläufig aufgewertet und könnte es später akzeptieren, abhängig von der Qualität der anderen Antworten. – Cleb