subclassing ndarray
Hi folks, I'm working on a "ragged array" class  an array that can store and work with what can be considered tabular data, with the rows of different lengths: """ ragged_array A "ragged" array class  build on numpy The idea is to be able to store data that is essentially 2d, but each row is an arbitrary length, like: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... At the moment, my implementation (see enclosed) stores the data in a 1d numpy array as an attribute, and also an index array that stores the indexes into the rows. This is working fine. However, I'd like to have it support any of the usual numpy operations that make sense for a ragged array: arr.sum() arr *= a_scalar arr * a_scalar etc, etc, etc. So I thought maybe I'd do a subclass, instead of having the data array an attribute of the class. But I can't figure out how to solve the indexing problem: I want to remap indexing, so that: arr[i] returns the ith "row": In [2]: ra = ragged_array([(1,2), (3,4,5), (6,7)]) In [4]: print ra ragged array: [1 2] [3 4 5] [6 7] In [5]: ra[1] Out[5]: array([3, 4, 5]) I'm currently doing (error checking removed): def __getitem__(self,index): """ returns a numpy array of one row. """ row = (self._data_array[self._index_array[index]:self._index_array[index+1]] ) return row But if I subclass ndarray, then self._data_array becomes jsut plain "self", and I've overloaded indexing (and slicing), so I don't know how I could index into the "flat" array to get the subset of the array I need. any ideas? Other comments about the class would be great, too. Chris  Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 5266959 voice 7600 Sand Point Way NE (206) 5266329 fax Seattle, WA 98115 (206) 5266317 main reception Chris.Barker@noaa.gov
participants (1)

Chris.Barker