Überprüfen Sie, ob Schwimmer ist in der Nähe float gespeichert in array

Ich brauche, um zu überprüfen, ob ein bestimmter float ist zu schließen, innerhalb einer gegebenen Toleranz zu jeder float - in ein array von floats.

import numpy as np

# My float
a = 0.27
# The tolerance
t = 0.01
# Array of floats
arr_f = np.arange(0.05, 0.75, 0.008)

Gibt es eine einfache Möglichkeit, dies zu tun? So etwas wie if a in arr_f: aber so für eine gewisse Toleranz in der Differenz?


Hinzufügen

Durch "zulassen-Toleranz" - ich meine das in folgendem Sinne:

for i in arr_f:
    if abs(a - i) <= t:
        print 'float a is in arr_f within tolerance t'
        break
  • suchen Sie eine Lösung, die einfach zu schreiben und zu pflegen oder benötigen Sie einen anspruchsvollen Ansatz, um eine bessere Leistung erzielen?
  • ich denke numpy.isclose(a,arr_f, atol=t) ist die beste Antwort, wie Sie unten sehen!
  • warum ist das besser als (abs(arr_f - a) < t).any()?
  • deine Antwort ist auch gut , aber andere useed numpy Methode ! und Ihr Vorteil, wenn Sie dies !
  • Ich denke nicht, dass das relevant ist, zumal dieser Ansatz ist schneller, aber ich denke jedem das seine, lol 🙂
  • Oft (aber nicht unbedingt in deinem Fall), du willst einen relativen Fehler, entlang der Linien von abs(arr_f - a) / max(abs(arr_f), abs(a)) und einen Wert für die Toleranz von vielleicht 1E-5 oder 1E-6. Ich erwarte, dass numpy bietet einen Mechanismus für die, auch; die isclose() - Methode könnte es geben — in der Tat, statt der atol=t vorgeschlagen, Sie könnte verwenden rtol=t geben Sie einen relativen Toleranz.

InformationsquelleAutor Gabriel | 2014-09-21
Schreibe einen Kommentar