[Numpy-discussion] logical priority
Stephen Walton
stephen.walton at csun.edu
Tue Feb 8 17:00:36 CST 2005
Fernando Perez wrote:
> Travis Oliphant wrote:
>
>> Currently, I don't think Python allows "over-riding" the "and" operation.
>
>
> You are correct:
What I want must be possible somehow, though:
In [6]: a=[True,False]
In [7]: b=[False,False]
In [8]: a and b
Out[8]: [False, False]
In [9]: a or b
Out[9]: [True, False]
In [10]: not a
Out[10]: False
So, standard Python does apply logical "and" and "or", but not "not",
element by element to a list or tuple of booleans. Is there no way to
get access to this for a numarray bool array? Can we get Guido to
change "not" to also operate element-wise on a list of booleans?
I have a really common task in MATLAB I want to have work here. In
MATLAB I can extract the overlapping good values from two data sets by doing
f = data1 ~= flagval & data2 ~= flagval;
or even more compactly, since I use IEEE NaN for flagval
f = ~isnan(data1) & ~isnan(data2);
Right now in numarray I have to use
f = (data1 != flagval) & (data2 != flagval)
with the extra parentheses and, confusingly, using bitwise AND instead
of logical AND. Even if I use ieeespecial nan as flagval, there's no
"notisnan(data1)" and no way to say "!isnan(data1)"
Of course, masked arrays are another option for this kind of usage but
they have their own difficulties: matplotlib does not at present allow
one to plot from masked arrays, for example.
More information about the Numpy-discussion
mailing list