Hi,<br><br><div><span class="gmail_quote">On 8/25/06, <b class="gmail_sendername">Travis Oliphant</b> &lt;<a href="mailto:oliphant.travis@ieee.org">oliphant.travis@ieee.org</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Sebastian Haase wrote:<br>&gt;&gt; This is now the behavior in SVN.&nbsp;&nbsp; Note that this is different from both<br>&gt;&gt; Numeric (which gave an error) and numarray (which coerced to float32).<br>&gt;&gt;<br>&gt;&gt; But, it is consistent with how mixed-types are handled in calculations
<br>&gt;&gt; and is thus an easier rule to explain.<br>&gt;&gt;<br>&gt;&gt; Thanks for the testing.<br>&gt;&gt;<br>&gt;&gt; -Travis<br>&gt;&gt;<br>&gt;<br>&gt; How hard would it be to change the rules back to the numarray behavior ?
<br>&gt;<br>It wouldn't be hard, but I'm not so sure that's a good idea.&nbsp;&nbsp; I do see<br>the logic behind that approach and it is worthy of some discussion.<br>I'll give my current opinion:<br><br>The reason I changed the behavior is to get consistency so there is one
<br>set of rules on mixed-type interaction to explain. You can always do<br>what you want by force-casting your int32 arrays to float32.&nbsp;&nbsp;&nbsp;&nbsp;There<br>will always be some people who don't like whichever behavior is<br>selected, but we are trying to move NumPy in a direction of consistency
<br>with fewer exceptions to explain (although this is a guideline and not<br>an absolute requirement).<br><br>Mixed-type interaction is always somewhat ambiguous.&nbsp;&nbsp;Now there is a<br>consistent rule for both universal functions and other functions (move
<br>to a precision where both can be safely cast to --- unless one is a<br>scalar and then its precision is ignored).</blockquote><div><br>I think this is a good thing. It makes it easy to remember what the function will produce. The only oddity the user has to be aware of is that int32 has more precision than float32. Probably not obvious to a newbie, but a newbie will probably be using the double defaults anyway. Which is another good reason for making double the default type.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">If you don't want that to happen, then be clear about what data-type<br>should be used by casting yourself.&nbsp;&nbsp; In this case, we should probably
<br>not try and guess about what users really want in mixed data-type<br>situations.</blockquote><div><br>I wonder if it would be reasonable to add the dtype keyword to hstack itself? Hmmm, what are the conventions for coercions to lesser precision?&nbsp; That could get messy indeed, maybe it is best to leave such things alone and let the programmer deal with it by rethinking the program. In the float case that would probably mean using a float32 array instead of an int32 array.
<br><br>Chuck<br></div><br></div><br>