<br><br><div class="gmail_quote">On Mon, Aug 1, 2011 at 7:47 PM, Matthieu Rigal <span dir="ltr">&lt;<a href="mailto:rigal@rapideye.de">rigal@rapideye.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi guys,<br>
<br>
I just detected a problem with the output shape calculation when running a<br>
zoom function.<br>
Sometimes it returns an odd value, here is an example :<br>
&gt;&gt;&gt; import numpy<br>
&gt;&gt;&gt; from scipy.ndimage.interpolation import zoom<br>
&gt;&gt;&gt; aT = numpy.ones((5000,5000))<br>
&gt;&gt;&gt; aT2 = numpy.ones((556,463))<br>
&gt;&gt;&gt; aT3 = zoom(aT2, (float(aT.shape[0])/aT2.shape[0],<br>
float(aT.shape[1])/aT2.shape[1]))<br>
&gt;&gt;&gt; aT3.shape<br>
(4999, 5000)<br>
<br>
Whereas adding a very little incrementation factor produces it right :<br>
&gt;&gt;&gt; aT3 = zoom(aT2, (1.00001*float(aT.shape[0])/aT2.shape[0],<br>
1.00001*float(aT.shape[1])/aT2.shape[1]))<br>
&gt;&gt;&gt; aT3.shape<br>
(5000, 5000)<br>
<br>
There must be somewhere a problem with the roundings... should I file a ticket<br>
?<br></blockquote><div><br>The zoom function seems to round down when non-integer shapes are requested. This is more a problem with the interface than an actual bug. Your first zoom factor times the input axis size gives:<br>
<br>&gt;&gt;&gt; (float(aT.shape[0])/aT2.shape[0]) * aT2.shape[0]<br>4999.9999999999991<br><br>The zoom function can&#39;t know whether you want an array of size 4999 or 5000 if you pass in a zoom factor that implies an output shape of 4999.xxx. A patch for zoom to accept an `output_shape` keyword that would override the `zoom` parameter may be useful.<br>
<br>Cheers,<br>Ralf</div></div>