Thanks Travis and Robert for the clarification; it is much more clear what is going on now.
As the demo code shows, also a.flags['OWNDATA'] is different on its way out of the pickle; which also makes sense now. So using that flag instead of checking a.base for None is equivalent, at least in this situation. So is it a bug, then, that, on Windows, .base is set to None (of course, this may be something that was fixed in later versions of numpy; I was only able to test Windows with numpy 1.4.1). I'll just make a copy and discard the original to work around the situation (which is what I already had done, but the inconsistent behavior across versions and platforms made me think it was a bug). Thanks again for the clear explanation of what is going on. On Sat, Jun 30, 2012 at 6:33 PM, Daniel Hyams <[email protected]> wrote: > Hmmm, I wouldn't think that it is correct behavior; I would think that > *any* ndarray arising from pickling would have its .base attribute set to > None. If not, then who is really the one that owns the data? > > It was my understanding that .base should hold a reference to another > ndarray that the data is really coming from, or it's None. It certainly > shouldn't be some random string, should it? > > And yes, it is causing a problem for me, which is why I noticed it. In my > application, ndarrays can come from various sources, pickling being one of > them. Later in the app, I was wanting to resize the array, which you > cannot do if the data is not really owned by that array...I had explicit > check for myarray.base==None, which it is not when I get the ndarray from a > pickle. > > > -- > Daniel Hyams > [email protected] > -- Daniel Hyams [email protected]
_______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
