[Numpy-discussion] Renaming a field of an object array

2009-02-04 Thread Pierre GM
All,
I'm a tad puzzled by the following behavior (I'm trying to correct a  
bug in genfromtxt):

I'm creating an empty structured ndarray, using np.object as dtype.

  a = np.empty(1,dtype=[('',np.object)])
array([(None,)],
   dtype=[('f0', '|O4')])

Now, I'd like to rename the field:
  a.view([('NAME',np.object)])
TypeError: Cannot change data-type for object array.

I understand why I can't change the *type* of the field, but not why I  
can't change its name that way. What would be an option that wouldn't  
involve creating a new array ?
Thx in advance.

___
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] Renaming a field of an object array

2009-02-04 Thread Brent Pedersen
On Wed, Feb 4, 2009 at 2:50 PM, Pierre GM pgmdevl...@gmail.com wrote:
 All,
 I'm a tad puzzled by the following behavior (I'm trying to correct a
 bug in genfromtxt):

 I'm creating an empty structured ndarray, using np.object as dtype.

   a = np.empty(1,dtype=[('',np.object)])
 array([(None,)],
   dtype=[('f0', '|O4')])

 Now, I'd like to rename the field:
   a.view([('NAME',np.object)])
 TypeError: Cannot change data-type for object array.

 I understand why I can't change the *type* of the field, but not why I
 can't change its name that way. What would be an option that wouldn't
 involve creating a new array ?
 Thx in advance.

 ___
 Numpy-discussion mailing list
 Numpy-discussion@scipy.org
 http://projects.scipy.org/mailman/listinfo/numpy-discussion


hi, i was looking at this as well. the code in arrayobject.c doesnt
match the error string. i changed the code to do what the error string
says and seems thing to work.
i think the if-block below it should also use xor (not changed in this
patch), but i'm not a c programmer so i may be missing something
obvious.

svn diff numpy/core/src/arrayobject.c
Index: numpy/core/src/arrayobject.c
===
--- numpy/core/src/arrayobject.c(revision 6338)
+++ numpy/core/src/arrayobject.c(working copy)
@@ -6506,9 +6506,16 @@
 PyErr_SetString(PyExc_TypeError, invalid data-type for array);
 return -1;
 }
-if (PyDataType_FLAGCHK(newtype, NPY_ITEM_HASOBJECT) ||
-PyDataType_FLAGCHK(newtype, NPY_ITEM_IS_POINTER) ||
-PyDataType_FLAGCHK(self-descr, NPY_ITEM_HASOBJECT) ||
+if (PyDataType_FLAGCHK(newtype, NPY_ITEM_HASOBJECT) ^
+PyDataType_FLAGCHK(self-descr, NPY_ITEM_HASOBJECT)) {
+PyErr_SetString(PyExc_TypeError,  \
+Cannot change data-type for object  \
+array.);
+Py_DECREF(newtype);
+return -1;
+}
+
+if (PyDataType_FLAGCHK(newtype, NPY_ITEM_IS_POINTER) ||
 PyDataType_FLAGCHK(self-descr, NPY_ITEM_IS_POINTER)) {
 PyErr_SetString(PyExc_TypeError,  \
 Cannot change data-type for object  \
___
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion