Efficiently converting a numarray object to Numeric
Hi, I'm wondering if there is a more efficient way to convert a numarray object into a Numeric one than:
import Numeric import numarray from time import time a = numarray.arange(100*1000) t1=time();b=Numeric.array(a);time()-t1 0.43448090553283691
Any suggestions? --
qo< Francesc Altet http://www.carabos.com/ V V Cárabos Coop. V. Enjoy Data ""
On Wed, 2005-02-09 at 16:37 +0100, Francesc Altet wrote:
Hi,
I'm wondering if there is a more efficient way to convert a numarray object into a Numeric one than:
import Numeric import numarray from time import time a = numarray.arange(100*1000) t1=time();b=Numeric.array(a);time()-t1 0.43448090553283691
Any suggestions?
Yes! import Numeric import numarray from time import time a = numarray.arange(100*1000) t1=time();b=Numeric.array(a); print time()-t1 t1 = time(); c=Numeric.fromstring(a._data, typecode='i') print time()-t1 print b[-10:] print c[-10:] I get: 1.58109998703 0.00659704208374 [99990 99991 99992 99993 99994 99995 99996 99997 99998 99999] [99990 99991 99992 99993 99994 99995 99996 99997 99998 99999] Note that in CVS, fromstring(a, typecode='i') now also works because numarray now supplies the buffer protocol as well as consuming buffers. Regards, Todd
On Wed, 2005-02-09 at 11:27 -0500, Todd Miller wrote:
On Wed, 2005-02-09 at 16:37 +0100, Francesc Altet wrote:
Hi,
I'm wondering if there is a more efficient way to convert a numarray object into a Numeric one than:
import Numeric import numarray from time import time a = numarray.arange(100*1000) t1=time();b=Numeric.array(a);time()-t1 0.43448090553283691
Any suggestions?
Yes!
import Numeric import numarray from time import time
a = numarray.arange(100*1000)
t1=time();b=Numeric.array(a); print time()-t1
t1 = time(); c=Numeric.fromstring(a._data, typecode='i') print time()-t1
print b[-10:] print c[-10:]
I get:
1.58109998703 0.00659704208374 [99990 99991 99992 99993 99994 99995 99996 99997 99998 99999] [99990 99991 99992 99993 99994 99995 99996 99997 99998 99999]
Note that in CVS, fromstring(a, typecode='i') now also works because numarray now supplies the buffer protocol as well as consuming buffers.
One more thing is necessary to handle a misbehaved numarray and make its buffer usable by Numeric: if not a.is_c_array(): a = a.copy() Regards, Todd
participants (2)
-
Francesc Altet
-
Todd Miller