`ValueError: Ein Wert, der in x_new über den interpolationsbereich.` - welche anderen Gründe als nicht aufsteigende Werte?

Erhalte ich diesen Fehler in scipy interp1d Funktion. Normalerweise wird dieser Fehler generiert werden, wenn das x nicht streng monoton Steigend.

import scipy.interpolate as spi
def refine(coarsex,coarsey,step):
    finex = np.arange(min(coarsex),max(coarsex)+step,step)
    intfunc = spi.interp1d(coarsex, coarsey,axis=0)
    finey = intfunc(finex)
    return finex, finey

for num, tfile in enumerate(files):
    tfile = tfile.dropna(how='any')
    x = np.array(tfile['col1'])
    y = np.array(tfile['col2'])
    finex, finey = refine(x,y,0.01)

Den code korrekt ist, weil er erfolgreich gearbeitet 6 Daten-Dateien und warf den Fehler für den 7. Platz. Also muss es etwas falsch mit den Daten. Aber soweit ich das beurteilen kann, der Daten erhöhen den ganzen Weg nach unten.
Ich bin leider nicht die Bereitstellung ein Beispiel, denn ich bin nicht in der Lage, den Fehler zu reproduzieren, auf ein Beispiel.

Gibt es zwei Dinge, die mir helfen könnte:

  1. Einige brainstorming - die Daten sind in der Tat monoton
    die Erhöhung, was könnte diesen Fehler verursachen? Ein weiterer Hinweis,
    in Bezug auf die Dezimalstellen, konnte im diese Frage, aber ich denke,
    meine Lösung (die min und max des x) ist robust genug, um es zu vermeiden. Oder
    ist es nicht?
  2. Ist es möglich (wie?) um den Rückgabewert von x_new und
    es ist index, wenn das werfen der ValueError: A value in x_new is above the interpolation range. so dass ich tatsächlich sehen konnte, wo in der
    Datei ist das problem?

UPDATE

Also das problem ist, dass aus irgendeinem Grund, max(finex) ist größer als max(coarsex) (man ist .x39 und den anderen ist .x4). Ich hoffte, dass die Rundung der ursprünglichen Werte auf 2 signifikante Ziffern würde das problem lösen, aber es ging nicht, es zeigt weniger Ziffern hat, aber zählt immer noch mit den nicht angezeigten. Was kann ich dagegen tun?

Ich würde den Fokus auf die min/max finex im Vergleich zu der Reihe von coarsex. Die Nachricht sagt mir, dass einige Wert finex größer als jeder Wert coarsex in einer region, die erfordern würde, dass eine extrapolation.
wie konnte ein Wert von finex größer sein als die des coarsex wenn es heißt, es sollte nur reichen, um den maximalen Wert von coarsex? Oh, ich sehe, ich denke, es könnte passieren, wenn die step größer ist als die Differenz zwischen dem maximum und dem zweiten maximalen Wert... Nein, warte, es kann nicht, weil der Schritt ist step!

InformationsquelleAutor durbachit | 2017-08-01

Schreibe einen Kommentar