[Numpy-discussion] Record arrays, nesting, and assignment

Vebjorn Ljosa vebjorn at ljosa.com
Wed Jul 15 15:19:29 EDT 2009


Suppose I have a record array where one of the fields is a nested array:

 >>> from numpy import *
 >>> desc = dtype([('point', 'i4', 3), ('unimportant', 'S3')])
 >>> a = array([((1,2,3), 'foo'), ((7,8,9), 'bar')], dtype=desc)
 >>> a
array([([1, 2, 3], 'foo'), ([7, 8, 9], 'bar')],
      dtype=[('point', '<i4', 3), ('unimportant', '|S3')])
 >>> a[0]
([1, 2, 3], 'foo')

If I try to assign to a[0]['point'], it only works partially:

 >>> a[0]['point'] = array([4, 5, 6])
 >>> a[0]
([4, 2, 3], 'foo')

However, if I assign to a['point'][0], it works:

 >>> a['point'][0] = array([10, 11, 12])
 >>> a[0]
([10, 11, 12], 'foo')

I should obviously remember to do it the second way ... but why does
the first way not work?

Thanks,
Vebjorn

P.S.  In case it matters, numpy.__version__ == '1.2.1'.



More information about the NumPy-Discussion mailing list