just a basic question (since I haven't looked at this in some time)

I'm creating a structured array in a function. However, I want to
return the array with just a simple dtype

uni = uni.view(dt).reshape(-1, ncols)
return uni

the returned uni has owndata=False. Who owns the data, since the
underlying, original array went out of scope?

alternatives

1)
uni = np.asarray(uni, dt).reshape(-1, ncols)
return uni

looks obvious but raises exception

2)
uni.dtype = dt
uni.reshape(-1, ncols)
return uni

this works and uni owns the data. I'm only worried whether assigning
to dtype directly is not a dangerous thing to do.

>>> u
array([0, 0, 0, 1, 1, 0, 1, 1])
>>> u.dtype = np.dtype("float")
>>> u
array([  0.00000000e+000,   2.12199579e-314,   4.94065646e-324,
         2.12199579e-314])

adding a safety check:

        for t in uni.dtype.fields.values():
            assert (t[0] == dt)


maybe I shouldn't care if nobody owns the data.

Thanks,

Josef
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to