[Numpy-discussion] Bug in numarray<->numpy interaction

Francesc Altet faltet at carabos.com
Mon Dec 25 05:15:57 CST 2006


A Diumenge 24 Desembre 2006 13:57, Norbert Nemec escrigué:
> The following snippet demonstrates a problem in the interaction of
> numarray 1.5.2 with numpy 1.0.1 (and older versions):
>
> -------------------
> #!/usr/bin/env python
>
> import numarray, numpy
>
> na = numarray.array(0.)
> np = numpy.array(0.)
>
> na[...] = np
> -------------------
>
> the last linec causes the error
>    "TypeError: NA_setFromPythonScalar: bad value type."
>
> The problem occured in a perfectly normal piece of code combining
> PyTables (internally based on numarray) with calculations done in NumPy.
> AFAICS, it should work but simply is a bug somewhere in numarray or numpy.

Well, I'm not sure whether we should take this as a bug of numarray
(although numpy is happily accepting rank-0 arrays from numarray or
Numeric, so we won't have this problem in forthcoming PyTables 2.0).
In any case, here you have a quick workaround for PyTables:

Index: tables/Array.py
===================================================================
--- tables/Array.py     (revision 2166)
+++ tables/Array.py     (revision 2167)
@@ -656,7 +656,10 @@

         # Assign the value to it
         try:
-            narr[...] = value
+            if hasattr(value, 'shape') and value.shape == ():  # Rank-0 case
+                narr[...] = value[()]
+            else:
+                narr[...] = value
         except Exception, exc:  #XXX
             raise ValueError, \
 """value parameter '%s' cannot be converted into an array object compliant 
with %s:

The above patch will accept rank-0 arrays from both NumPy or Numeric.
It has also been applied into std-1.4 branch:

http://www.pytables.org/trac/changeset/2168/branches

Cheers!

-- 
>0,0<   Francesc Altet     http://www.carabos.com/
V   V   Cárabos Coop. V.   Enjoy Data
 "-"



More information about the Numpy-discussion mailing list