# [Scipy-tickets] [SciPy] #1756: interp2d uses a confusing index order, webpage documentation wrong

SciPy Trac scipy-tickets@scipy....
Mon Oct 29 04:05:52 CDT 2012

#1756: interp2d uses a confusing index order, webpage documentation wrong
---------------------------------+------------------------------------------
Reporter:  aviolov              |       Owner:  somebody
Type:  defect               |      Status:  new
Priority:  low                  |   Milestone:  Unscheduled
Component:  scipy.interpolate    |     Version:  0.9.0
Keywords:  interp2d, meshgrid,  |
---------------------------------+------------------------------------------
The code provided on the interp2d Examples page:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.html

only works because the x, y arrays and the x_new, y_new arrays are exactly
the same size/shape. If they were different it will break - consider the
following variation, where the x,y,x_new, y_new arrays are of different
size:
{{{
#######################################
from scipy import interpolate
import numpy as np
from matplotlib import pyplot as plt

x = np.arange(-5.01, 5.01, 0.25)
y = np.arange(-5.01, 5.01, 0.5) # y != x
xx, yy = np.meshgrid(x, y)
z = np.sin(xx**2+yy**2)
f = interpolate.interp2d(x, y, z, kind='cubic')

xnew = np.arange(-5.01, 5.01, 1e-2)
ynew = np.arange(-5.01, 5.01, 1e-1) # y_new != x_new
znew = f(xnew, ynew)

plt.figure()
plt.plot(x, z[:, 0], 'ro-', xnew, znew[:, 0], 'b-') #THis is what is on
the scipy doc pages and it won't work = x, z[:, 0] won't have same
dimesion

plt.figure()
plt.plot(x, z[0,:], 'ro-', xnew, znew[:, 0], 'b-')  #THis is will also not
work - now x_new, znew[:, 0] won't have same dimension

plt.figure()
plt.plot(x, z[0,:], 'ro-', xnew, znew[0,:], 'b-') #This works

plt.show()
#######################################
}}}

The basic problem is that the indexes in z that corresponds to x is the
second dimension z[ydx, :], rather than the first y[:,ydx] as one would
expect intuitively - and as the writers of the documentation apparently
thought too.

i.e. meshgrid and interp2d, transpose the dimensions, or rather they use
Fortran ordering. I guess this way of doing things makes sense if you are
a Fortran person, but for me it is confusing that to index the values
along x of a tabulation of a function you need to access the second index
of an array, and, in any case, the documentation seems (is) wrong.

--
Ticket URL: <http://projects.scipy.org/scipy/ticket/1756>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.