Ich habe eine Funktion, die Numpy-Arrays oder Floats als Eingabe verwenden möchte. Ich möchte eine Operation so lange ausführen, bis ein Fehlermaß unter einem Schwellenwert liegt.
Ein einfaches Beispiel wäre das Folgende: Eine Zahl oder ein Array durch 2 zu teilen, bis es unter einem Schwellenwert liegt ( wenn es sich um einen Float handelt) oder bis sein Maximum unter einem Schwellenwert liegt (wenn es sich um ein Array handelt).
Code: Select all
def f(x): #float version
while x>1e-5:
x = x/2
return x
def f(x): #np array version
while max(x)>1e-5:
x = x/2
return x
Leider funktioniert max nicht, wenn ich etwas habe, das nicht iterierbar ist, und x>1e-5 funktioniert nicht, wenn x< /code> ist ein Array. Ich kann dazu nichts finden, außer vielleicht vektorisieren, aber das scheint nicht so effizient zu sein, wie ich es gerne hätte. Wie kann ich eine einzelne Funktion dazu bringen, beide Fälle zu behandeln?