[Numpy-discussion] Ticket #794 and can o' worms.
Charles R Harris
Sun Jul 20 23:41:09 CDT 2008
On Sun, Jul 20, 2008 at 8:32 PM, Timothy Hochberg <firstname.lastname@example.org>
> On Sun, Jul 20, 2008 at 3:47 PM, Robert Kern <email@example.com>
>> On Sun, Jul 20, 2008 at 17:42, Charles R Harris
>> <firstname.lastname@example.org> wrote:
>> > Hi All,
>> > I "fixed" ticket #754, but it leads to a ton of problems. The original
>> > discussion is here. The problems that arise come from conversion to
>> > different types.
>> > In : a
>> > Out: array([ Inf, -Inf, NaN, 0., 3., -3.])
>> > In : sign(a).astype(int)
>> > Out:
>> > array([ 1, -1, -2147483648, 0, 1,
>> > -1])
>> > In : sign(a).astype(bool)
>> > Out: array([ True, True, True, False, True, True], dtype=bool)
>> > In : sign(a)
>> > Out: array([ 1., -1., NaN, 0., 1., -1.])
>> > In : bool(NaN)
>> > Out: True
>> > So there are problems with at minimum the following.
>> > 1) The way NaN is converted to bool. I think it should be False.
>> It's not really our choice. That's Python's bool(). For the things
>> that are our choice (e.g. array([nan]).astype(bool)) I think we should
>> stay consistent with Python.
> I agree that this is a good goal. However, in the past, Python's treatment
> of NaNs has been rather platform dependent and add hock. In this case, I
> suspect that you are OK since the section "Truth Value Testing" in the
> Python docs is pretty clear that any non-zero value of a numerical type is
>> > 2) The way NaN is converted to int types. I think it should be 0.
>> I agree. That's what int(nan) gives:
>> >>> int(nan)
> This is GvR in
Well, now, that opens a whole other bag of toasted scorpions.
It looks like long(inf) and int(inf) already raise OverflowError and
> that should stay.
In : (ones(2)*float(inf)).astype(int8)
Out: array([0, 0], dtype=int8)
In : (ones(2)*float(inf)).astype(int32)
Out: array([-2147483648, -2147483648])
In : (ones(2)*float(inf)).astype(int64)
Out: array([-9223372036854775808, -9223372036854775808], dtype=int64)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Numpy-discussion