<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 22, 2017 at 10:06 PM, Thøger Emil Rivera-Thorsen <span dir="ltr"><<a href="mailto:thoger.emil@gmail.com" target="_blank">thoger.emil@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
<p>Dear list;</p>
<p>I am honestly not certain whether this, or the SciPy list, is the
appropriate place to post this; please let me know if I got it
wrong.<br>
</p>
<p>I am convolving a 1D data set containing a relatively narrow
peak, with a relatively narrow Gaussian kernel, in order to
emulate the effect of atmospheric seeing on astrophysical
observations.</p>
<p>I have a 1D data array 45 pixels long, and a Gaussian kernel, and
run np.convolve(data, kernel, mode='same') on the two arrays, the
resulting array's peak is shifted relative to the origin. I have
attached a plot to illustrate.</p>
<p>The original data is shown in blue. When I convolve it with a
symmetric kernel (black), I get an offset resulting peak
(magenta). If I flip the kernel -- even though it is perfectly
symmetric -- the resulting curve is offset in the opposite
direction (yellow). However, if I offset the kernel so it is
centered exactly one pixel below the central value, the output
array gets centered correct (red), even if I flip the (now no
longer symmetric) kernel.</p>
<p>This is using Numpy 1.11.3, python 2.7.13, on Anaconda 4.3.0
64-bit on Ubuntu 16.10 <br>
</p>
<p>Using astropy.convolution, reproduces the correct red curve, so I
can use that for now, but it seems to me this is either a bug or,
if it is indeed the intended behavior, a word of caution would be
merited in the docstring.<br>
</p>
<p>Cheers, <br>
</p>
<p>Emil Rivera-Thorsen</p>
<p><br>
</p>
<p> <img src="cid:part1.A4DD02F1.2C8946E8@gmail.com" alt=""></p>
</div>
<br>______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
<br></blockquote></div><br></div><div class="gmail_extra">Can you provide an example to replicate?</div><div class="gmail_extra"><br></div><div class="gmail_extra">I haven't seen this behavior, it looks centered to me, at least for odd window length.. </div><div class="gmail_extra">AFAIR, I had to try a bit in the past for how to set the window and location with even window length.</div><div class="gmail_extra"><div class="gmail_extra"><br></div><div class="gmail_extra">>>> np.__version__</div><div class="gmail_extra">'1.11.2'<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">>>> x = np.linspace(-1, 1, 21)<br></div></div><div class="gmail_extra"><div class="gmail_extra">>>> w = stats.norm.pdf(np.linspace(-3, 3, 5))</div><div class="gmail_extra">>>> np.column_stack((x, np.convolve(x, w, mode='same')))[8:13]</div><div class="gmail_extra">array([[ -2.00000000e-01, -1.33368234e-01],<br></div><div class="gmail_extra"> [ -1.00000000e-01, -6.66841169e-02],</div><div class="gmail_extra"> [ 0.00000000e+00, 1.51788304e-17],</div><div class="gmail_extra"> [ 1.00000000e-01, 6.66841169e-02],</div><div class="gmail_extra"> [ 2.00000000e-01, 1.33368234e-01]])</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">>>> x = np.abs(np.linspace(-1, 1, 21))</div><div class="gmail_extra">>>> w = stats.norm.pdf(np.linspace(-3, 3, 4))<br></div><div class="gmail_extra">>>> np.column_stack((x, np.convolve(x, w, mode='same')))[8:13]</div><div class="gmail_extra">array([[ 0.2 , 0.12320129],<br></div><div class="gmail_extra"> [ 0.1 , 0.07392077],</div><div class="gmail_extra"> [ 0. , 0.02552663],</div><div class="gmail_extra"> [ 0.1 , 0.02552663],</div><div class="gmail_extra"> [ 0.2 , 0.07392077]])</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">>>> w = stats.norm.pdf(np.linspace(-3, 3, 5))</div><div class="gmail_extra">>>> np.column_stack((x, np.convolve(x, w, mode='same')))[8:13]</div><div class="gmail_extra">array([[ 0.2 , 0.13336823],<br></div><div class="gmail_extra"> [ 0.1 , 0.06757049],</div><div class="gmail_extra"> [ 0. , 0.02767626],</div><div class="gmail_extra"> [ 0.1 , 0.06757049],</div><div class="gmail_extra"> [ 0.2 , 0.13336823]])</div><div class="gmail_extra"><br></div><div class="gmail_extra">Josef</div></div></div></div>