[Numpy-discussion] Using interpolate with zero-rank array raises error

Tony Yu tsyu80 at gmail.com
Thu Jul 16 12:07:54 EDT 2009


Sorry, I don't know if its proper mailing-list-etiquette to bump my  
own post...

Are there any comments on whether this interp error is expected  
behavior?

Thanks,
-Tony

> Date: Mon, 13 Jul 2009 13:50:50 -0400
> From: Tony Yu <tsyu80 at gmail.com>
> Subject: [Numpy-discussion] Using interpolate with zero-rank array
> 	raises	error
> To: Discussion of Numerical Python <numpy-discussion at scipy.org>
> Message-ID: <67526143-4424-4E06-BFE5-435091C78878 at gmail.com>
> Content-Type: text/plain; charset="us-ascii"
>
> (Sorry if this is a duplicate; I think sent this from the wrong email
> the first time)
>
> When using interpolate with a zero-rank array, I get "ValueError:
> object of too small depth for desired array". The following code
> reproduces this issue
>
>>>> import numpy as np
>>>> x0 = np.array(0.1)
>>>> x = np.linspace(0, 1)
>>>> y = np.linspace(0, 1)
>>>> np.interp(x0, x, y)
>
> I hesitate to call this behavior a bug (when I've done this in the
> past, I find out I'm just doing something wrong), but I find the error
> unnecessary (and the error output a bit obscure).
>
> Below is a (poorly tested) fix, which seems to work for me. (Sorry I'm
> not on svn, so it isn't a proper diff)
>
> Cheers,
> -Tony
>
> Python 2.5.1
> numpy 1.3.0
>
> numpy/lib/function_base.py: line 1144
> =============================
>    if isinstance(x, (float, int, number)):
>        return compiled_interp([x], xp, fp, left, right).item()
> +    elif isinstance(x, np.ndarray) and x.ndim == 0:
> +        return compiled_interp(x[np.newaxis], xp, fp, left, right)[0]
>    else:
>        return compiled_interp(x, xp, fp, left, right)
> =============================
>




More information about the NumPy-Discussion mailing list