+1 for getting rid of this inconsistency We've hit this with Iris (a met/ocean analysis package - see github), and have had to add several workarounds.
On 19 April 2013 16:55, Chris Barker - NOAA Federal <chris.bar...@noaa.gov>wrote: > Hi folks, > > In [264]: np.__version__ > Out[264]: '1.7.0' > > I just noticed that deep copying a rank-zero array yields a scalar -- > probably not what we want. > > In [242]: a1 = np.array(3) > > In [243]: type(a1), a1 > Out[243]: (numpy.ndarray, array(3)) > > In [244]: a2 = copy.deepcopy(a1) > > In [245]: type(a2), a2 > Out[245]: (numpy.int32, 3) > > regular copy.copy() seems to work fine: > > In [246]: a3 = copy.copy(a1) > > In [247]: type(a3), a3 > Out[247]: (numpy.ndarray, array(3)) > > Higher-rank arrays seem to work fine: > > In [253]: a1 = np.array((3,4)) > > In [254]: type(a1), a1 > Out[254]: (numpy.ndarray, array([3, 4])) > > In [255]: a2 = copy.deepcopy(a1) > > In [256]: type(a2), a2 > Out[256]: (numpy.ndarray, array([3, 4])) > > Array scalars seem to work fine as well: > > In [257]: s1 = np.float32(3) > > In [258]: s2 = copy.deepcopy(s1) > > In [261]: type(s1), s1 > Out[261]: (numpy.float32, 3.0) > > In [262]: type(s2), s2 > Out[262]: (numpy.float32, 3.0) > > There are other ways to copy arrays, but in this case, I had a dict > with a bunch of arrays in it, and needed a deepcopy of the dict. I was > surprised to find that my rank-0 array got turned into a scalar. > > -Chris > > -- > > Christopher Barker, Ph.D. > Oceanographer > > Emergency Response Division > NOAA/NOS/OR&R (206) 526-6959 voice > 7600 Sand Point Way NE (206) 526-6329 fax > Seattle, WA 98115 (206) 526-6317 main reception > > chris.bar...@noaa.gov > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion