[Numpy-discussion] Time for beta1 of NumPy 1.0 (original) (raw)

Sasha ndarray at mac.com
Fri Jun 30 13:25:39 EDT 2006


Since I was almost alone with my negative vote on the float64 default, I decided to give some more thought to the issue.

I agree there are strong reasons to make the change. In addition to the points in the original post, float64 type is much more closely related to the well-known Python float than int32 to Python long.

For example no-one would be surprised by either

float64(0)/float64(0) nan

or

float(0)/float(0) Traceback (most recent call last): File "", line 1, in ? ZeroDivisionError: float division

but

int32(0)/int32(0) 0

is much more difficult to explain.

As is

int32(2)**32 0

compared to

int(2)**32 4294967296L

In short, arrays other than float64 are more of the hard-hat area and their properties may be surprising to the novices. Exposing novices to non-float64 arrays through default constructors is a bad thing.

Another argument that I find compelling is that we are in a now or never situation. No one expects that their Numeric or numarray code will work in numpy 1.0 without changes, but I don't think people will tolerate major breaks in backward compatibility in the future releases.

If we decide to change the default, let's do it everywhere including array constructors and arange. The later is more controversial, but I still think it is worth doing (will give reasons in the future posts).

Changing the defaults only in some functions or providing overrides to functions will only lead to more confusion.

My revised vote is -0.

On 6/30/06, Eric Jonas <jonas at mwl.mit.edu> wrote:

I've got to say +1 for Float64 too. I write a lot of numpy code, and this bites me at least once a week. You'd think I'd learn better, but it's just so easy to screw this up when you have to switch back and forth between matlab (which I'm forced to TA) and numpy (which I use for Real Work).

...Eric



More information about the NumPy-Discussion mailing list