[Numpy-discussion] Using logical function on more than 2 arrays, availability of a "between" function ?

Richard Hattersley rhattersley@gmail....
Mon Mar 19 08:20:23 CDT 2012


What do you mean by "efficient"? Are you trying to get it execute
faster? Or using less memory? Or have more concise source code?

Less memory:
 - numpy.vectorize would let you get to the end result without any
intermediate arrays but will be slow.
 - Using the "out" parameter of numpy.logical_and will let you avoid
one of the intermediate arrays.

More speed?:
Perhaps putting all three boolean temporary results into a single
boolean array (using the "out" parameter of numpy.greater, etc) and
using numpy.all might benefit from logical short-circuiting.

And watch out for divide-by-zero from "aNirChannel/aBlueChannel".

Regards,
Richard Hattersley

On 19 March 2012 11:04, Matthieu Rigal <rigal@rapideye.net> wrote:
> Dear Numpy fellows,
>
> I have actually a double question, which only aims to answer a single one :
> how to get the following line being processed more efficiently :
>
> array = numpy.logical_and(numpy.logical_and(aBlueChannel < 1.0, aNirChannel >
> (aBlueChannel * 1.0)), aNirChannel < (aBlueChannel * 1.8))
>
> One possibility would have been to have the logical_and being able to handle
> more than two arrays
>
> Another one would have been to be able to make a "double comparison" or a
> "between", like following one :
>
> array = numpy.logical_and((aBlueChannel < 1.0), (1.0 <
> aNirChannel/aBlueChannel < 1.8))
>
> Is there any way to get the things work this way ? Would it else be a possible
> improvement for 1.7 or a later version ?
>
> Best Regards,
> Matthieu Rigal
>
> RapidEye AG
> Molkenmarkt 30
> 14776 Brandenburg an der Havel
> Germany
>
> Follow us on Twitter! www.twitter.com/rapideye_ag
>
> Head Office/Sitz der Gesellschaft: Brandenburg an der Havel
> Management Board/Vorstand: Ryan Johnson
> Chairman of Supervisory Board/Vorsitzender des Aufsichtsrates:
> Robert Johnson
> Commercial Register/Handelsregister Potsdam HRB 24742 P
> Tax Number/Steuernummer: 048/100/00053
> VAT-Ident-Number/Ust.-ID: DE 199331235
> DIN EN ISO 9001 certified
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion


More information about the NumPy-Discussion mailing list