matplotlib griddata keyerror
Verfasst: Donnerstag 20. Januar 2011, 16:22
Hallo,
beim Benutzen der griddata-funktion aus matplotlib.mlab taucht bei mir (manchmal - dumm ist, dass ich mir nicht wirklich darüber im Klaren bin unter welchen Umständen der Fehler auftaucht) ein KeyError auf.
Ein Stück Code zu posten macht wenig Sinn, weil es sich tatsächlich nur um den "Standard-Code" für griddata handelt. Daher bin ich mir sicher, dass es irgendetwas mit der x-y-Menge der Punkte zu tun hat.
q2 und A_int sind 2 auf umständliche Weise erzeugte komplexe 2D-Arrays. Das witzige ist, dass der Fehler nicht auftaucht, wenn ich den slice oben auf [8000:10000] setze. Ich konnte aber an den entsprechenden Mengen keinen substantiellen Unterschied ausmachen - also zumindest ist mir nichts aufgefallen.
Der Fehler sieht dann so aus:
File "D:\Arbeit\Python\BSE for mesons\_BSEv3\_BSEv3.py", line 2077, in
bse_matrix = sBSE_matrix_class(q1, q2, BSE_par)
File "D:\Arbeit\Python\BSE for mesons\_BSEv3\_BSEv3.py", line 262, in __init__
self.DSE_contour(q1)
File "D:\Arbeit\Python\BSE for mesons\_BSEv3\_BSEv3.py", line 1155, in DSE_contour
A_pa_up, B_pa_up = self.DSE( quark.z_pa(quark.t_pa_up), quark)
File "D:\Arbeit\Python\BSE for mesons\_BSEv3\_BSEv3.py", line 902, in DSE
zi = griddata(x,y,z,xi,yi)
File "C:\progra~1\Python25\lib\site-packages\matplotlib\mlab.py", line 2941, in griddata
tri = delaunay.Triangulation(x,y)
File "C:\progra~1\Python25\lib\site-packages\matplotlib\delaunay\triangulate.py", line 88, in __init__
self.hull = self._compute_convex_hull()
File "C:\progra~1\Python25\lib\site-packages\matplotlib\delaunay\triangulate.py", line 128, in _compute_convex_hull
hull.append(edges.pop(hull[-1]))
KeyError: 1743
Nun: 'edges' hat also gar keinen key 'hull[-1]'
woran das aber liegen soll habe ich nicht verstanden.
Hat irgendjemand eine Idee?
beim Benutzen der griddata-funktion aus matplotlib.mlab taucht bei mir (manchmal - dumm ist, dass ich mir nicht wirklich darüber im Klaren bin unter welchen Umständen der Fehler auftaucht) ein KeyError auf.
Ein Stück Code zu posten macht wenig Sinn, weil es sich tatsächlich nur um den "Standard-Code" für griddata handelt. Daher bin ich mir sicher, dass es irgendetwas mit der x-y-Menge der Punkte zu tun hat.
Code: Alles auswählen
req = real(np.ravel(q2))[7500:10000]
imq = imag(np.ravel(q2))[7500:10000]
reA = real(np.ravel(A_int))[7500:10000]
x = req
y = imq
z = reA
# define grid.
xi = np.linspace(-.5,25.0,100)
yi = np.linspace(-1.,1.,50)
# grid the data.
zi = griddata(x,y,z,xi,yi)
Der Fehler sieht dann so aus:
File "D:\Arbeit\Python\BSE for mesons\_BSEv3\_BSEv3.py", line 2077, in
bse_matrix = sBSE_matrix_class(q1, q2, BSE_par)
File "D:\Arbeit\Python\BSE for mesons\_BSEv3\_BSEv3.py", line 262, in __init__
self.DSE_contour(q1)
File "D:\Arbeit\Python\BSE for mesons\_BSEv3\_BSEv3.py", line 1155, in DSE_contour
A_pa_up, B_pa_up = self.DSE( quark.z_pa(quark.t_pa_up), quark)
File "D:\Arbeit\Python\BSE for mesons\_BSEv3\_BSEv3.py", line 902, in DSE
zi = griddata(x,y,z,xi,yi)
File "C:\progra~1\Python25\lib\site-packages\matplotlib\mlab.py", line 2941, in griddata
tri = delaunay.Triangulation(x,y)
File "C:\progra~1\Python25\lib\site-packages\matplotlib\delaunay\triangulate.py", line 88, in __init__
self.hull = self._compute_convex_hull()
File "C:\progra~1\Python25\lib\site-packages\matplotlib\delaunay\triangulate.py", line 128, in _compute_convex_hull
hull.append(edges.pop(hull[-1]))
KeyError: 1743
Nun: 'edges' hat also gar keinen key 'hull[-1]'
woran das aber liegen soll habe ich nicht verstanden.
Hat irgendjemand eine Idee?