From: Travis O. <oli...@ee...> - 2006-06-23 21:01:11
|
Alan G Isaac wrote: >>Alan G Isaac wrote: >> >> >>>Why is a.flat not the same as a.A.flat? >>> >>> > > >On Fri, 23 Jun 2006, Travis Oliphant apparently wrote: > > >>It is the same object except for the pointer to the >>underlying array. When asarray(a.flat) get's called it >>looks to the underlying array to get the sub-class and >>constructs that sub-class (and matrices can never be 1-d). >>Thus, it's a "feature" >> >> > > >I doubt I will prove the only one to stumble over this. > >I can roughly understand why a.ravel() returns a matrix; >but is there a good reason to forbid truly flattening the matrix? > > Because matrices are never 1-d. This is actually pretty consistent behavior. >My instincts are that a flatiter object should not have this >hidden "feature": flatiter objects should produce >a consistent behavior in all settings, regardless of the >underlying array. Anything else will prove too surprising. > > I think you are right that this is a bug, though. Because __array__() (which is where the behavior comes from) should return a base-class array (not a sub-class). -Travis |