Alternative la scipy.interpolate.griddata care nu atarna pe puncte aliniate

I have a point dataset that I'm trying to interpolate on a grid. These points are aligned in grid fashion with some points missing see below: enter image description here

Pentru a le complica, este posibil ca alte seturi de puncte de intrare să nu se alinieze pe o rețea, așa că încerc să folosesc scipy.interpolate.griddata </​​code> pentru a interpola aceste valori într-o rețea obișnuită. Cu toate acestea, uneori grila de bază se aliniază perfect cu rata de eșantionare a setului de date punct de intrare și griddata </​​code> se blochează. În conformitate cu această întrebare scipy.interpolate.griddata </​​code> funcționează prost dacă eșantionul are loc în 3 puncte care sunt perfect aliniate, care uneori se întâmplă pentru mine.

Există o alternativă de înaltă performanță pentru interpolarea datelor punctuale pe o rețea obișnuită în Python?

0
Nu este doar un set de date ca cel de mai sus. Nu cred că problema este că punctele se repetă (nu sunt), dar punctul de eșantionare poate să se situeze direct pe axa x sau y și să se alinieze perfect cu alte 3 puncte, provocând triangularea Delauney la barf.
adăugat autor Rich, sursa
Puteți încerca versiunea actuală de dezvoltare a lui Scipy, care include un număr de bug-uri în griddata </​​code>. O nouă versiune Scipy va ieși luna viitoare, inclusiv aceste corecții, deci dacă o puteți testa deja, ar fi valoroasă.
adăugat autor pv., sursa
Aveți mai multe seturi de date, pe care le combinați și apoi interpolați? Dacă da, combinați-le astfel încât punctele să nu fie repetate , aceasta ar trebui să evite problema.
adăugat autor fraxel, sursa

1 răspunsuri

Soluția mea a fost aceea de a perturba stochastic coordonatele x și y ale fiecărui punct de intrare cu un factor aleatoriu între 1e-6 * grid_cell_size . Eu aleg 1e-6 drept regulă de mai multe ordine de mărime mai mare decât diferența delta minimă într-un flotor de 32 de biți, dar suficient de mic încât eroarea introdusă de el este încă umbrată de eroarea introdusă prin schema de interpolare.

Sunt încă deschis la alte idei, dar în acest fel pot utiliza funcțiile de interpolare a stocurilor furnizate de scipy prin introducerea unei erori numerice foarte mici.

0
adăugat
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.