Travis Oliphant wrote:
Tim Hochberg wrote:
Please see the transpose example above.
If you combine this with one other simplification: array() always copies, we end up with a nice thin interface: # Create a new array in 'order' order. Defaults to "C" order. array(object, dtype=None, order="C"|"FORTRAN")
I like the order flag. It's a relatively easy switch and one we should make right now. I don't mind string constants either in this case.
Great!
Removing the copy flag will break a lot of code because it's been around for a long time. This is also not an "easy thing" to add to convertcode.py though I suppose 90% of the cases could be found.
I kinda figured on that. But I figured I'd propose my favorite and see what came of it.
We would also have to re-write asarray to be an additional C-function to make it not copy but make array copy.
I thought so too at first, but I don't this is is so. Untested, and can could probably be cleaned up some: def asarray(obj, order=None): if type(obj) == ndarray: if order: if not obj.flags.contiguous: return array(obj, order) if order == "C" and obj.flags.fortran: return array(obj, order) if order == "FORTRAN" and not obj.flags.fortran: return array(obj, order) return obj else: if order: return array(obj, order) else: return array(obj) For asanyarray, simply replace the type test with an isinstance test.
So, for now I'm not as enthused about that idea.
Yeah. Without backward compatibility constraints I'm convinced that it's the right thing to do, but I realize there is a need to balance making the transistion manageable with making things "perfect". -tim