
Sameer DCosta wrote:
Hi,
I'm having trouble renaming record array fields if they contain object arrays in them. I followed the solutions posted by Robert Kern and Stefan van der Walt (Thanks again) but it doesn't look like this method works in all cases. For reference: http://projects.scipy.org/pipermail/numpy-discussion/2008-February/031509.ht...
In [1]: from numpy import *
In [2]: olddt = dtype([('foo', '|O4'), ('bar', float)])
In [3]: a = zeros(10, olddt)
In [4]: a Out[4]: array([(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0)], dtype=[('foo', '|O4'), ('bar', '<f8')])
In [5]: newdt = dtype([('notfoo', '|O4'), ('notbar', float)])
In [6]: b = a.view(newdt) --------------------------------------------------------------------------- TypeError Traceback (most recent call last)
/home/titan/sameer/projects/<ipython console>
TypeError: Cannot change data-type for object array.
This looks like a bug. We are being a bit over-zealous in protecting you from getting access to pointers and in the process making it impossible to rename Object fields. Perhaps an actual field-renaming API (which would be relatively easy) is useful. -Travis O.