Efficient storage of floats
Chris Barker
chrishbarker at attbi.com
Thu Dec 27 14:10:07 EST 2001
Francois Petitjean wrote:
>
> I have to read a number of points coordinates (npoints). Different
> structures can be used to store these numbers:
> 2. The coordinates can be stored in an array
> acoords = array.array('f')
This is crying out to be done with Numeric Arrays
(http://sourceforge.net/projects/numpy):
import Numeric:
coords = Numeric.zeros((3,npoints),Numeric.Float)
> Using acoords : x,y,z = acoords[3*kpt],acoords[3*kpt+1],acoords[3*kpt+2]
x,y,z = acoords(n)
The possible n-d arrays of Numeric make this kind of thing MUCH easier,
and you will get the efficient storage you want. Numeric arrays use the
same amont of storage a C array would use for the same type, plus the
overhead of the Array object, which would be negligable compared to the
data for a large array.
Asside for that, you now have a data an object type that supports
effiecent computation, wiht nice easy notation:
transformed_coords = acoords * 5
to multiply all the coordanates by 5, or:
transformed_coords = acoords * (x_scale, y_scale, z_scale)
Etc, etc, etc.
If you are working with a lot of numbers, you are crazy not to use
Numeric.
-Chris
--
Christopher Barker,
Ph.D.
ChrisHBarker at attbi.net --- --- ---
---@@ -----@@ -----@@
------@@@ ------@@@ ------@@@
Oil Spill Modeling ------ @ ------ @ ------ @
Water Resources Engineering ------- --------- --------
Coastal and Fluvial Hydrodynamics --------------------------------------
------------------------------------------------------------------------
More information about the Python-list
mailing list