Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError when appending fields to a structured array of size ONE

I'm getting a run-time error when trying to append field(s) to a structured array of size ONE. I've written a simple example below:

import numpy as np
import numpy.lib.recfunctions as rcfuncs

dtype_ = np.dtype( { 'names': ["field_a","field_b","field_c"]
                  , 'formats': ['S32', 'i4', 'f8']}
                  )
data_ = [("1",17, 123.45)]
numpy_array = np.array(data_, dtype_)            

# append 2 fields
numpy_array = rcfuncs.append_fields( numpy_array,["field_d","field_e"],data=[ "1","3" ] )

# append 1 field fails :(
numpy_array = rcfuncs.append_fields( numpy_array, "field_f", data=["123456"] )

I'm getting the error:

TypeError: descriptor 'ravel' requires a 'numpy.ndarray' object but received a 'numpy.void'

As well, if I 'invert' the appends, the statement with the two fields append will fail:

# append 1 field
numpy_array = rcfuncs.append_fields( numpy_array, "field_f", data=["123456"] )

# append 2 fields fails :(
numpy_array = rcfuncs.append_fields( numpy_array,["field_d","field_e"],data=[ "1", "3" ] )

I am running with python 2.7.11 and numpy 1.11.0 and I do not have the issue when the initial array is of size greater than 2.

How to solve the type error?

Thanks

like image 504
stackoverflower Avatar asked Sep 02 '25 02:09

stackoverflower


1 Answers

We do not get the TypeError when setting the optional parameter usemask to False

numpy_array = \
  rcfuncs.append_fields(numpy_array, "field_f", data=["123456"], usemask=False)
numpy_array = \
  rcfuncs.append_fields(numpy_array,["field_d","field_e"],data=[ "1", "3" ], usemask=False)
like image 152
stackoverflower Avatar answered Sep 05 '25 06:09

stackoverflower