[Numpy-discussion] Changed behavior of np.gradient

Derek Homeier derek at astro.physik.uni-goettingen.de
Sat Oct 4 15:29:46 EDT 2014


On 4 Oct 2014, at 08:37 pm, Ariel Rokem <arokem at gmail.com> wrote:

> >>> import numpy as np
> >>> np.__version__
> '1.9.0'
> >>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float))
> [array([[ 2.,  2., -1.],
>        [ 2.,  2., -1.]]), array([[-0.5,  2.5,  5.5],
>        [ 1. ,  1. ,  1. ]])]
> 
> On the other hand: 
> >>> import numpy as np
> >>> np.__version__
> '1.8.2'
> >>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float))
> [array([[ 2.,  2., -1.],
>        [ 2.,  2., -1.]]), array([[ 1. ,  2.5,  4. ],
>        [ 1. ,  1. ,  1. ]])]
> 
> For what it's worth, the 1.8 version of this function seems to be in agreement with the Matlab equivalent function ('gradient'): 
> >> gradient([[1, 2, 6]; [3, 4, 5]])
> ans =
>     1.0000    2.5000    4.0000
>     1.0000    1.0000    1.0000
> 
> This seems like a regression to me, but maybe it's an improvement? 
> 
Technically yes, the function has been changed to use 2nd-order differences where possible,
as is described in the docstring. Someone missed to update the example though, which still
quotes the 1.8 results.
And if the loss of Matlab-compliance is seen as a disadvantage, maybe there is a case for
re-enabling the old behaviour via keyword argument?

Cheers,
					Derek




More information about the NumPy-Discussion mailing list