[SciPy-User] best way to convert a structured array to a float view (again)

Vincent Davis vincent at vincentdavis.net
Fri Jun 4 15:40:15 EDT 2010


On Fri, Jun 4, 2010 at 1:38 PM, Vincent Davis <vincent at vincentdavis.net> wrote:
> On Fri, Jun 4, 2010 at 9:55 AM, Skipper Seabold <jsseabold at gmail.com> wrote:
>> Say I have the following arrays that I want to view as/cast to plain
>> ndarrays with float dtype
>>
>> import numpy as np
>> arr = np.array([(24,),(24,),(24,),(24,),(24,)], dtype=[("var1",int)])
>>
>> arr2 = np.array([(24,4.5),(24,4.5),(24,4.5),(24,4.5),(24,4.5)],
>> dtype=[("var1",int),("var2",float)])
>>
>> What I really want to be able to do is something like
>>
>> arr.view(float)
>
> I am going to do some timing but this looks promising. Glad to know I
> am not the onlyone that think going between data types is a hassel.
>
> arr2 = np.array([(24,4.5),(24,4.5),(24,4.5),(24,4.5),(24,4.5)],
>                dtype=[("var1",int),("var2",float)])
>>>> arr2.dtype=float
>>>> arr2
> array([  1.18575755e-322,   4.50000000e+000,   1.18575755e-322,
>         4.50000000e+000,   1.18575755e-322,   4.50000000e+000,
>         1.18575755e-322,   4.50000000e+000,   1.18575755e-322,
>         4.50000000e+000])


I just relived that that doesn't work for the int part, It really
should give an error.

Vincent

>
> Of course if you want to leave arr2 untouched you need some type of copy.
>
> Vincent
>
>
>>
>> or
>>
>> arr2.view((float,2))
>>
>> But I realize that I can't do this because of how the structs are
>> defined in memory.  So my question is, is this the best (cheapest,
>> easiest) way to get arr or arr2 as all floats.
>>
>> arr3 = np.zeros(len(arr), dtype=float)
>> arr3[:] = arr.view(int)
>>
>> or
>>
>> arr4 = np.zeros(len(arr2),
>> dtype=zip(arr2.dtype.names,['float']*len(arr2.dtype.names)))
>> arr4[:] = arr2[:]
>> arr5 = arr4.view((float,len(arr4.dtype.names)))
>>
>> So now I have arr3 and arr5.  I need this to be rather general (can
>> ignore strings and object types for now), so that's the reason for the
>> approach I'm taking here.
>>
>> Thanks,
>>
>> Skipper
>> _______________________________________________
>> SciPy-User mailing list
>> SciPy-User at scipy.org
>> http://mail.scipy.org/mailman/listinfo/scipy-user
>>
>



More information about the SciPy-User mailing list