[SciPy-User] Populating a recarray from 0 size
Christopher Barker
Chris.Barker at noaa.gov
Sun Aug 22 15:16:04 EDT 2010
Sergi Pons Freixes wrote:
> The problem is that the size is not known. I'll think about the list of tuples.
It is the generally accepted method for building up an array -- build a
list first, then convert to an array. However, I think it would be great
to have a built-in way to do this with numpy efficiently, particularly
for things like recarrays and data types that pure python does not have.
> I would also appreciate is a reasoning of why is scipy.resize (e.g.,
> numpy.resize) raising this exception.
true -- probably a bug/missing feature. However, calling resize on every
addition is likely to be slow and inefficient anyway -- it has to
re-allocate memory every single time.
The way this is usually handled (and is handled by python lists...) is
to pre-allocate more than required at first, and then when that amount
gets full, re-allocate some more -- this way you only re-allocate every
once in a while, rather than at every append -- at the expense of some
wasted memory.
With that in mind, I wrote a pure python numpy array "accumulator",
which used .resize() under the hood, but pre-allocates. The performance
isn't' great, but should be better than calling a re-size() every time.
I'd like to see something like this written in C some day -- but who
knows if I'll ever get around to it...
Enclosed, if you want to try it out.
-Chris
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Accumulator.zip
Type: application/zip
Size: 4701 bytes
Desc: not available
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20100822/cbb8e52e/attachment.zip>
More information about the SciPy-User
mailing list