[Numpy-discussion] field names on numpy arrays

Robert Kern robert.kern at gmail.com
Wed Jun 3 19:23:06 EDT 2009


On Wed, Jun 3, 2009 at 18:20, Pierre GM <pgmdevlist at gmail.com> wrote:
>
> On Jun 3, 2009, at 5:03 PM, Robert Kern wrote:
>
>> On Wed, Jun 3, 2009 at 15:26,  <josef.pktd at gmail.com> wrote:
>>> 2009/6/3 Stéfan van der Walt <stefan at sun.ac.za>:
>>>> Hi Jon
>>>>
>>>> 2009/6/3 D2Hitman <j.m.girven at warwick.ac.uk>:
>>>>> I understand record arrays such as:
>>>>> a_array =
>>>>> np.array([(0.,1.,2.,3.,4.),(1.,2.,3.,4.,5.)],dtype=[('a','f'),
>>>>> ('b','f'),('c','f'),('d','f'),('e','f')])
>>>>> do this with field names.
>>>>> a_array['a'] = array([ 0.,  1.], dtype=float32)
>>>>> however i seem to lose simple operations such as multiplication
>>>>> (a_array*2)
>>>>> or powers (a_array**2).
>>> Why does it not preserve "shape", to do e.g. np.mean by axis?
>>
>> It does preserve the shape. The input and output are both 1D. If you
>> need a different shape (e.g. re-interpreting the record as another
>> axis), you need to reshape it yourself. numpy can't guess what you
>> want.
>
> Or, as all fields have the same dtype:
>
>  >>> a_array.view(dtype=('f',len(a_array.dtype)))
> array([[ 0.,  1.,  2.,  3.,  4.],
>        [ 1.,  2.,  3.,  4.,  5.]], dtype=float32)
>
> Ain't it fun ?

Ah, yes, there is that niggle, too.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list