[Numpy-discussion] printing structured arrays
Skipper Seabold
jsseabold at gmail.com
Mon Mar 8 14:24:39 EST 2010
On Mon, Mar 8, 2010 at 2:17 PM, <josef.pktd at gmail.com> wrote:
> On Mon, Mar 8, 2010 at 2:04 PM, Skipper Seabold <jsseabold at gmail.com> wrote:
>> On Mon, Mar 8, 2010 at 2:01 PM, <josef.pktd at gmail.com> wrote:
>>> On Mon, Mar 8, 2010 at 1:55 PM, Tim Michelsen
>>> <timmichelsen at gmx-topmail.de> wrote:
>>>> Hello,
>>>> I am also looking into the convertsion from strcutured arrays to ndarray.
>>>>
>>>>> I've just started playing with numpy and have noticed that when printing
>>>>> a structured array that the output is not nicely formatted. Is there a
>>>>> way to make the formatting look the same as it does for an unstructured
>>>>> array?
>>>>
>>>>> Output is:
>>>>> ### ndarray
>>>>> [[ 1. 2. ]
>>>>> [ 3. 4.1]]
>>>>> ### structured array
>>>>> [(1.0, 2.0) (3.0, 4.0999999999999996)]
>>>> How could we make this structured array look like the above shown
>>>> ndarray with shape (2, 2)?
>>>
>>> .view(float) should do it, to created a ndarray view of the structured
>>> array data
>>>
>>
>> Plus a reshape. I usually know how many columns I have, so I put in
>> axis 1 and leave axis 0 as -1.
>>
>> In [21]: a.view(float).reshape(-1,2)
>> Out[21]:
>> array([[ 1. , 2. ],
>> [ 3. , 4.1]])
>
>
> a.view(float).reshape(len(a),-1) #if you don't want to count columns
>
> I obviously haven't done this in a while.
> And of course, it only works if all elements of the structured array
> have the same type.
>
For the archives with heterogeneous dtype.
import numpy as np
b = np.array([(1.0, 'string1', 2.0), (3.0, 'string2', 4.1)],
dtype=[('x', float),('str_var', 'a7'),('y',float)])
b[['x','y']].view(float).reshape(len(b),-1) # note the list within list syntax
#array([[ 1. , 2. ],
# [ 3. , 4.1]])
Skipper
More information about the NumPy-Discussion
mailing list