[Numpy-discussion] Optionally using Numeric in another compiled extension package.

Paul F Dubois paul at pfdubois.com
Wed Jan 15 10:50:07 CST 2003


If you could do:
try:
    import Numeric
    haveNumeric = 1
except:
    haveNumeric = 0

in some initialization routine, then you could use this flag.
Alternately you could test on the fly
'Numeric' in [m.__name__ for m in sys.modules]

> -----Original Message-----
> From: numpy-discussion-admin at lists.sourceforge.net 
> [mailto:numpy-discussion-admin at lists.sourceforge.net] On 
> Behalf Of Chris Barker
> Sent: Wednesday, January 15, 2003 9:22 AM
> Cc: Numpy-discussion
> Subject: [Numpy-discussion] Optionally using Numeric in 
> another compiled extension package.
> 
> 
> Hi folks,
> 
> I use Numeric an wxPython together a lot (of course I do, I 
> use Numeric for everything!).
> 
> Unfortunately, since wxPython is not Numeric aware, you lose 
> some real potential performance advantages. For example, I'm 
> now working on expanding the extensions to graphics device 
> contexts (DCs) so that you can draw a whole bunch of objects 
> with a single Python call. The idea is that the looping can 
> be done in C++, rather than Python, saving a lot of overhead 
> of the loop itself, as well as the Python-wxWindows translation step.
> 
> For drawing thousands of points, the speed-up is substantial. 
> It's less substantial on more complex objects (rectangles 
> give a factor of two improvement for ~1000 objects), due to 
> the longer time it takes to draw the object itself, rather 
> than make the call. 
> 
> Anyway, at the moment, Robin Dunn has the wrappers set up so 
> that you can pass in a NumPy array (or, indeed, and sequence) 
> rather than a list or tuple of coordinates, but it is faster 
> to use a list than a NumPy array, because for arrays, it uses 
> the generic PySequence_GetItem call. If we used the NumPy API 
> directly, it should be faster than using a list, not slower! 
> THis is how a representative section of the code looks
> now:
> 
> 
> bool      isFastSeq  = PyList_Check(pyPoints) ||
> PyTuple_Check(pyPoints);
> .
> .
> .
>                 // Get the point coordinants
>                 if (isFastSeq) {
>                     obj = PySequence_Fast_GET_ITEM(pyPoints, i);
>                 }
>                 else {
>                     obj = PySequence_GetItem(pyPoints, i);
>                 }
> 
> .
> .
> .
> 
> So you can see that if a NumPy array is passed in, 
> PySequence_GetItem will be used.
> 
> What I would like to do is have an isNumPyArray check, and 
> then access the NumPy array directly in that case.
> 
> The tricky part is that Robin does not want to have wxPython 
> require Numeric. (Oh how I dream of the day that NumArray 
> becomes part of the standard library!) How can I check if an 
> Object is a NumPy array (and then use it as such), without 
> including Numeric during compilation?
> 
> I know one option is to have condition compilation, with a 
> NumPy and non-Numpy version, but Robin is managing a whole 
> lot of different version as it is, and I don't think he wants 
> to deal with twice as many!
> 
> Anyone have any ideas?
> 
> By the way, you can substitute NumArray for NumPy in this, as 
> it is the wave of the future, and particularly if it would be easier.
> 
> -Chris
> 
> 
> -- 
> Christopher Barker, Ph.D.
> Oceanographer
>                                     		
> NOAA/OR&R/HAZMAT         (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
> 
> 
> -------------------------------------------------------
> This SF.NET email is sponsored by: A Thawte Code Signing Certificate 
> is essential in establishing user confidence by providing 
> assurance of 
> authenticity and code integrity. Download our Free Code 
> Signing guide: 
> http://ads.sourceforge.net/cgi-> bin/redirect.pl?thaw0028en
> 
> 
> _______________________________________________
> Numpy-discussion mailing list Numpy-discussion at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/numpy-discussion
> 





More information about the Numpy-discussion mailing list