[Numpy-discussion] sum of a masked array

smpitts at ou.edu smpitts at ou.edu
Wed Sep 1 13:21:10 CDT 2004


Darren,
I tried your code on my system: Python 2.2 and numarray 1.0. The type error looks like a bug in the array display code.

>>> Rx = ones((2500,2500))
>>> N = make_mask_none((2500,2500))
>>> Rx = array(Rx,mask=N)
>>> print average(Rx) ## works
[ 1.  1.  1. ...,  1.  1.  1.]
>>> s = sum(Rx)
>>> print s

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.2/site-packages/numarray/ma/MA.py", line 742, in __str__
    return str(filled(self, f))
  File "/usr/lib/python2.2/site-packages/numarray/generic.py", line 499, in __str__
    return arrayprint.array2string(self, separator=" ", style=str)
  File "/usr/lib/python2.2/site-packages/numarray/arrayprint.py", line 188, in array2string
    separator, prefix)
  File "/usr/lib/python2.2/site-packages/numarray/arrayprint.py", line 137, in _array2string
    data = _leading_trailing(a)
  File "/usr/lib/python2.2/site-packages/numarray/arrayprint.py", line 105, in _leading_trailing
    b = _gen.concatenate((a[:_summaryEdgeItems],
  File "/usr/lib/python2.2/site-packages/numarray/generic.py", line 1028, in concatenate
    return _concat(arrs)
  File "/usr/lib/python2.2/site-packages/numarray/generic.py", line 1012, in _concat
    dest  = arrs[0].__class__(shape=destShape, type=convType)
TypeError: __init__() got an unexpected keyword argument 'type'

but the array is fine

>>> for i in range(2500): 
...     assert s[i] == 2500
>>> 

Hopefully someone with more knowledge can help you out. I still use MA with Numeric for the most part.
--
Stephen Pitts
smpitts at ou.edu





More information about the Numpy-discussion mailing list