[Numpy-discussion] Ransom Proposals

Sasha ndarray at mac.com
Sat Mar 25 09:54:01 EST 2006


On 3/24/06, Tim Hochberg <tim.hochberg at cox.net> wrote:
>
> Now that the fortran keyword is dead, I'll take time off from rejoicing,
> to briefly go over other proposals that were involved in that thread
> lest they get lost in the shuffle.
>

Many thanks for the effort.  That thread actually started as
"ndarray.fill and ma.array.filled", but it quickly went off the
original topic and forked at your annalistic "(mumble mumble reshape
mumble)." :-)

> * reshape -- The origination of that whole, enormous thread was with
> reshape and what its return behaviour should be. Currently it returns a
> view if possible, otherwise it returns a copy. That's evil behaviour. I
> believe that it should either always return a copy or return a view if
> possible and otherwise raise an exception. I think I actually prefer the
> later, although it's probably a more disruptive change, since its more
> flexible when combined with asarray and friends.  One possible
> compromise would be to have numpy.reshape always copy, while
> array.reshape always returns a view.
>
Could you, please provide some examples of the current behavior that
you find undesired and how yuo would fix it?  I believe the
inconsistency is that x.reshape(shape) is x depends on shape.  This is
easy to fix.  Do you also suggest that x.reshape(...).__array_data__
is x.__array_data__ should be False?

> * ascontiguous -- In private email Chris Barker mentioned that the name
> ascontiguous was confusing, or at least not to his taste and suggested
> "something like" ascontiguous_array. I don't like that one, but it might
> worth considering something that matches asarray and asanyarray.
> ascontigarray looks okay to me, but it's quite possible that I've
> staring at this too long and that's just cryptic.
>

+0 (+1 for "ascontiguousarray")

> * ndmin -- I still think ndmin should be spun off to a separate
> function. It's trivial to implement a fuction, call it paddims for lack
> of a better name (asatleastndimensionarray seems kind of long and
> cryptic!). It should have minimal performance since no data gets copied,
> and if it makes a difference I would be willing to implement it in C in
> need be so that that performance impact was minimized.
>
>     def paddims(a, n):
>         "return a view of 'a' with at least 'n' dimensions"
>         dims = a.shape
>         b = a.view()
>         b.shape = (1,)*(n - len(dims)) + dims
>         return b

+1 (Boolean parameter is almost always a sign that a function is overloaded.)
>
> * copy -- Yes, I understand that the copy flag is probably not going to
> change for backward compatibility reasons if nothing else, but there was
> one last point I wanted to make about the copy flag.

I am all for eliminating boolean parameters no matter what the
consequences are.  For me foo(bool, ...) is always a sign that it
should be refactored to foo(...) an bar(...), with shared code
possibly going to _baz(...).




More information about the NumPy-Discussion mailing list