<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 16, 2016 at 1:48 PM, Travis Oliphant <span dir="ltr"><<a href="mailto:travis@continuum.io" target="_blank">travis@continuum.io</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Wed, Mar 16, 2016 at 12:55 PM, Nathaniel Smith <span dir="ltr"><<a href="mailto:njs@pobox.com" target="_blank">njs@pobox.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Hi Travis,</p><span>
<p dir="ltr">On Mar 16, 2016 9:52 AM, "Travis Oliphant" <<a href="mailto:travis@continuum.io" target="_blank">travis@continuum.io</a>> wrote:<br>
><br>
> Hi everyone,<br>
><br>
> Can you help me understand why the stricter changes to generalized ufunc argument checking no now longer allows scalars to be interpreted as 1-d arrays in the core-dimensions? <br>
><br>
> Is there a way to specify in the core-signature that scalars should be allowed and interpreted in those cases as an array with all the elements the same?   This seems like an important feature. </p>
</span><p dir="ltr">Can you share some example of when this is useful?</p></blockquote><div><br></div></span><div>Being able to implicitly broadcast scalars to arrays is the core-function of broadcasting.    This is still very useful when you have a core-kernel an want to pass in a scalar for many of the arguments.   It seems that at least in that case, automatic broadcasting should be allowed --- as it seems clear what is meant.</div><div><br></div><div>While you can use the broadcast* features to get the same effect with the current code-base, this is not intuitive to a user who is used to having scalars interpreted as arrays in other NumPy operations. <br></div></div></div></div></blockquote><div><br></div><div>The `@` operator doesn't allow that.<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div><br></div><div>It used to automatically happen and a few people depended on it in several companies and so the 1.10 release broke their code. <br></div><div><br></div><div>I can appreciate that in the general case, allowing arbitrary broadcasting on the internal core dimensions can create confusion.  But, scalar broadcasting still makes sense. </div></div></div></div></blockquote><div><br></div><div>Mixing array multiplications with scalar broadcasting is looking for trouble. Array multiplication needs strict dimensions and having stacked arrays and vectors was one of the prime objectives of gufuncs. Perhaps what we need is a more precise notation for broadcasting, maybe `*` or some such addition to the signaturs to indicate that scalar broadcasting is acceptable.<br><br></div><div> <snip><br><br></div><div>Chuck<br></div><br></div></div></div>