<div class="gmail_quote">On Thu, Oct 4, 2012 at 12:23 PM, Jay Bourque <span dir="ltr"><<a href="mailto:jay.bourque@continuum.io" target="_blank">jay.bourque@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>Hey Anthony, thanks for the comments.</div><div><br><div class="gmail_quote"><div class="im">On Mon, Oct 1, 2012 at 10:32 PM, Anthony Scopatz <span dir="ltr"><<a href="mailto:scopatz@gmail.com" target="_blank">scopatz@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Jay, <div><br></div><div>Cool idea!  I like to see work on structured arrays.  Just a couple of questions:</div>

<div>
<ul><li>Since there are already have ufuncs for primitive dtypes (int, float, etc), and you are just acting columnwise here, can't you write a single function which interprets the dtypes, gathers the approriate scalar ufuncs, and applies those down each field?  Yes registering individual functions using your mechanism will be faster, but it will also be more work.</li>


</ul></div></blockquote></div><div>I hadn't thought of this approach, but I suppose that would work okay too for certain dtypes. You'd lose some flexibility with writing a ufunc for a specific struct dtype though (for example maybe the ufunc shouldn't be applied to all the fields in a record). Maybe this approach would be a good default to use when a ufunc hasn't been registered for a struct dtype?</div>

</div></div></blockquote><div><br></div><div>A sensible default was use case that I had in mind.  I think that it is cool to be register your own ufuncs and I like what you have done there.  So what I suggested is more of an addition than a strict criticism of work to date.   </div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="gmail_quote"><div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><ul>

<li>I didn't try this out myself, but will the normal numpy broadcasting rules apply here?</li></ul></div></blockquote></div><div>I need to do more testing for this, but yes, I believe normal broadcasting rules should work fine.</div>

</div></div></blockquote><div><br></div><div>That'd be great!</div><div><br></div><div>Be Well</div><div>Anthony</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div class="gmail_quote"><div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>Be Well</div></div><div>Anthony</div><div><br><div class="gmail_quote"><div><div>On Mon, Oct 1, 2012 at 10:36 AM, Jay Bourque <span dir="ltr"><<a href="mailto:jay.bourque@continuum.io" target="_blank">jay.bourque@continuum.io</a>></span> wrote:<br>




</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:20px"><div>




All,</div><div><br></div><div>I've submitted the following pull request for NumPy:</div>
<div><br></div><div><a href="https://github.com/numpy/numpy/pull/462" target="_blank">https://github.com/numpy/numpy/pull/462</a></div><div><br></div>This change allows ufuncs to be registered for structured arrays by using a new API method </span><span style="color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:20px">PyUFunc_RegisterLoopForStructType. For example, </span><span style="color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:20px">a ufunc could be registered to take two arrays of type 'u8,u8,u8' and return an array of type 'u8,u8,u8'. I have a trivial example of this included in my pull request, along with further details of my changes. I suspect there might be a better way to do this, so any suggestions for improvements would be welcome.</span><div>








<span style="color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:20px"><br></span></div><div><span style="color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:20px">Thanks,</span></div>








<div><span style="color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:20px">-Jay</span></div><div><span style="color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:20px"><a href="http://continuum.io" target="_blank">continuum.io</a></span></div>








<br></div></div>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div></div><br></div>
<br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br>