[Numpy-discussion] Problem with correlate

rob steed rjsteed@talk21....
Mon May 18 05:48:04 CDT 2009

Hi all,

I have been using numpy.correlate and was finding something weird. I now think that there might be a bug.

Correlations should be order dependent eg. correlate(x,y) != correlate(y,x) in general (whereas convolutions are symmetric)

>>> import numpy as N
>>> x = N.array([1,0,0])
>>> y = N.array([0,0,1])

>>> N.correlate(x,y,'full')
array([1, 0, 0, 0, 0])
>>> N.correlate(y,x,'full')
array([0, 0, 0, 0, 1])

This works fine. However, if the arrays have different lengths, we get a problem.

>>> y2=N.array([0,0,0,1])
>>> N.correlate(x,y2,'full')
array([0, 0, 0, 0, 0, 1])
>>> N.correlate(y2,x,'full')
array([0, 0, 0, 0, 0, 1])

I believe that somewhere in the code, the arrays are re-ordered by their length. Initially I thought that this was because
correlate was deriving from convolution but looking at numpy.core, I can see that in fact convolution derives from correlate. 
After that, it becomes C code which I haven't managed to look at yet.

Am I correct, is this a bug? 


Rob Steed


More information about the Numpy-discussion mailing list