[SciPy-User] masked griddata() from Cookbook example

denis denis-bz-gg at t-online.de
Fri Aug 6 12:07:52 EDT 2010


While the doc for matplotlib.mlab.griddata clearly says

    A masked array is returned if any grid points are outside convex
hull
    defined by input data (no extrapolation is done).

it may not be obvious to someone running the example in
http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data
how easily "outside convex hull" can happen.
I'd suggest growing the example a bit along the lines

<code><pre>
nrand = 10
ngrid = 21
hull = 0
exec "\n".join( sys.argv[1:] )  # run this.py nrand= ...
...
x = np.random.uniform(-2, 2, nrand)
y = np.random.uniform(-2, 2, nrand)
if hull:
    x = np.r_[ -2, 2, 2, -2, x]  # add 4 corners to griddata all, not
just the convex hull
    y = np.r_[ -2, -2, 2, 2, y]
z = f(x,y)
xi = np.linspace(-2,2,ngrid)
yi = np.linspace(-2,2,ngrid)

#...............................................................................
zi = griddata(x,y,z,xi,yi)  # 1d x y z -> 2d zi on meshgrid(xi,yi)

nmask = np.ma.count_masked(zi)
if nmask > 0:
    print >>sys.stderr, "warning: griddata: %d masked points in
output" % nmask
    np.savetxt( sys.stderr, zi.mask.astype(int), "%d", "" )
...
</pre></code>

Would anyone care to talk this over, before editing the Cookbook
example ?
(Actually I think griddata() should add the 4 corners by itself, but.)

cheers
  -- denis



More information about the SciPy-User mailing list