[Numpy-discussion] at my wits end over an error message...

Alan Jackson alan@ajackson....
Sat Aug 30 22:14:40 CDT 2008


Thanks. I'm still struggling with learning the idiom. Too much perl
to unlearn. 8-)

On Sat, 30 Aug 2008 23:10:10 -0400
Zachary Pincus <zachary.pincus@yale.edu> wrote:

> Hi Alan,
> 
> > Traceback (most recent call last):
> >  File "/usr/local/lib/python2.5/site-packages/enthought.traits-2.0.4- 
> > py2.5-linux-i686.egg/enthought/traits/trait_notifiers.py", line 325,  
> > in call_1
> >    self.handler( object )
> >  File "TrimMapl_1.py", line 98, in _Run_fired
> >    outdata = np.array(outdata, dtype=dtypes)
> > TypeError: expected a readable buffer object
> 
> This would make it appear that the problem is not with numpy per se,  
> but with the traits library, or how you're using it... I'm not too  
> familiar with traits, so I can't really provide any advice there.
> 
> Can you disable whatever it is you're doing with traits for the time  
> being, to see if that solves it? Maybe not have whatever notifier is  
> presumably listening to outdata?
> 
> Also, for the record, your inner loop could be rendered in more  
> idiomatic python as:
> 
> TYPICALLY_UINT_COLUMNS = set(['Track', 'Bin', 'code', 'horizon'])
> ......
>         dtypes = []
>         for var in self.var_list:
>             if var in TYPICALLY_UINT_COLUMNS:
>                 dtypes.append(var, '<i8'))
>             else :
>                 dtypes.append(var, '<f8'))
> or even:
> 
> TYPICALLY_UINT_COLUMNS = set(['Track', 'Bin', 'code', 'horizon'])
> dtypes = [(var, '<i8' if var in TYPICALLY_UINT_COLUMNS else '<f8') for  
> var in self.var_list]
> 
> if you really want to break out the new ternary operator (py 2.5 and  
> above).
> 
> Not that it matters at all in this case, but (in addition to being  
> easier to read and write) loops like the above will be much faster  
> than the original code if you've got some larger parsing operations to  
> do. (Also, note that the 'in' operator works on lists and tuples as  
> well as sets and dicts, but for the former two, it's a linear search,  
> while for the latter, a hash lookup.)
> 
> Zach
> 
> 
> > TYPICALLY_UINT_COLUMNS = ['Track', 'Bin', 'code', 'horizon']
> > ......
> >        dtypes = [ ]
> >        for i in range(0, len(self.var_list)) :
> >            if TYPICALLY_UINT_COLUMNS.count(self.var_list[i]) > 0:
> >                dtypes.append((self.var_list[i], '<i8'))
> >            else :
> >                dtypes.append((self.var_list[i], '<f8'))
> >        print "dtypes = ", dtypes
> >        print outdata[0]
> >        outdata = np.array(outdata, dtype=dtypes)
> 
> 
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion


-- 
-----------------------------------------------------------------------
| Alan K. Jackson            | To see a World in a Grain of Sand      |
| alan@ajackson.org          | And a Heaven in a Wild Flower,         |
| www.ajackson.org           | Hold Infinity in the palm of your hand |
| Houston, Texas             | And Eternity in an hour. - Blake       |
-----------------------------------------------------------------------


More information about the Numpy-discussion mailing list