use ufunc for arbitrary positional arguments?

I have a need to "and" together an arbitrary number of boolean arrays. np.logical_and() expects only two positional arguments. There has got to be some sort of easy way to just and these together using the ufunc mechanism, right? Cheers! Ben Root

On Fri, Oct 10, 2014 at 11:23 AM, Benjamin Root <ben.root@ou.edu> wrote:
I have a need to "and" together an arbitrary number of boolean arrays. np.logical_and() expects only two positional arguments. There has got to be some sort of easy way to just and these together using the ufunc mechanism, right?
Do you really need a ufunc? The obvious way to do this (at least to me) would be use reduce (if you're especially concerned about memory) or just np.all.

Oy! I got to be having a brain fart today. np.all on the list of boolean arrays applied on the first(?) axis is much clearer than any ufunc or reduce call. And to answer the next question... use np.any for logical_or()... Thanks! Ben Root On Fri, Oct 10, 2014 at 2:27 PM, Stephan Hoyer <shoyer@gmail.com> wrote:
On Fri, Oct 10, 2014 at 11:23 AM, Benjamin Root <ben.root@ou.edu> wrote:
I have a need to "and" together an arbitrary number of boolean arrays. np.logical_and() expects only two positional arguments. There has got to be some sort of easy way to just and these together using the ufunc mechanism, right?
Do you really need a ufunc? The obvious way to do this (at least to me) would be use reduce (if you're especially concerned about memory) or just np.all.
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion

On Fr, 2014-10-10 at 14:30 -0400, Benjamin Root wrote:
Oy! I got to be having a brain fart today. np.all on the list of boolean arrays applied on the first(?) axis is much clearer than any ufunc or reduce call. And to answer the next question... use np.any for logical_or()...
Of course np.all is pretty much identical to np.logical_and.reduce(), and that is defined for all ufuncs. Of course your list of arrays will be converted to one large array first, so the python reduce may actually be faster in many cases. - Sebastian
Thanks!
Ben Root
On Fri, Oct 10, 2014 at 2:27 PM, Stephan Hoyer <shoyer@gmail.com> wrote: On Fri, Oct 10, 2014 at 11:23 AM, Benjamin Root <ben.root@ou.edu> wrote: I have a need to "and" together an arbitrary number of boolean arrays. np.logical_and() expects only two positional arguments. There has got to be some sort of easy way to just and these together using the ufunc mechanism, right?
Do you really need a ufunc? The obvious way to do this (at least to me) would be use reduce (if you're especially concerned about memory) or just np.all.
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
participants (3)
-
Benjamin Root
-
Sebastian Berg
-
Stephan Hoyer