[Numpy-discussion] Problem with correlate

josef.pktd@gmai... josef.pktd@gmai...
Mon May 18 09:21:20 CDT 2009


2009/5/18 Stéfan van der Walt <stefan@sun.ac.za>:
> 2009/5/18 rob steed <rjsteed@talk21.com>:
>> 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')
>
> This looks like a bug to me.
>
> In [54]: N.correlate([1, 0, 0, 0], [0, 0, 0, 1],'full')
> Out[54]: array([1, 0, 0, 0, 0, 0, 0])
>
> In [55]: N.correlate([1, 0, 0, 0, 0], [0, 0, 0, 1],'full')
> Out[55]: array([1, 0, 0, 0, 0, 0, 0, 0])
>
> In [56]: N.correlate([1, 0, 0, 0, 0], [0, 0, 0, 0, 1],'full')
> Out[56]: array([1, 0, 0, 0, 0, 0, 0, 0, 0])
>
> In [57]: N.correlate([1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1],'full')
> Out[57]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
>

comparing with scipy:
  signal.correlate behaves the same "flipping" way as np.correlate,
  ndimage.correlate keeps the orientation.

>>> np.correlate([1, 2, 0, 0, 0], [0, 0, 1, 0, 0,0],'same')
array([0, 0, 0, 2, 1, 0])
>>> np.correlate([1, 2, 0, 0, 0], [0, 0, 1, 0, 0],'same')
array([1, 2, 0, 0, 0])
>>> np.correlate([1, 2, 0, 0, 0], [0, 0, 1, 0, 0, 0],'full')
array([0, 0, 0, 0, 0, 2, 1, 0, 0, 0])
>>> np.correlate([1, 2, 0, 0, 0], [0, 0, 1, 0, 0],'full')
array([0, 0, 1, 2, 0, 0, 0, 0, 0])
>>>
>>> signal.correlate([1, 2, 0, 0, 0], [0, 0, 1, 0, 0, 0])
array([0, 0, 0, 0, 0, 2, 1, 0, 0, 0])
>>> signal.correlate([1, 2, 0, 0, 0], [0, 0, 1, 0, 0])
array([0, 0, 1, 2, 0, 0, 0, 0, 0])
>>> ndimage.filters.correlate([1, 2, 0, 0, 0], [0, 0, 1, 0, 0, 0],mode='constant')
array([0, 1, 2, 0, 0])
>>> ndimage.filters.correlate([1, 2, 0, 0, 0], [0, 0, 1, 0, 0],mode='constant')
array([1, 2, 0, 0, 0])

Josef


More information about the Numpy-discussion mailing list