[SciPy-user] Masked array question

josef.pktd at gmail.com josef.pktd at gmail.com
Mon Jun 8 13:48:56 EDT 2009


On Mon, Jun 8, 2009 at 1:32 PM, Pierre GM <pgmdevlist at gmail.com> wrote:
>
> On Jun 8, 2009, at 12:59 PM, Robert Ferrell wrote:
>
>> I have a tuple of strings that I want to convert to an array of
>> floats.  Some of the strings are empty, so I thought I could use a
>> masked array to mask out the empty strings.  (In my application, empty
>> string means no data, so ignore.)
>>
>> I tried:
>>
>> np.ma.masked_array(('1.', ' '), mask=(False, True), dtype=(np.float32,
>> np.float32))
>
> As indicated by the error message, it's a pb w/ numpy: it doesn't know
> how to process the '' for float. That you're using masked arrays
> unfortunately doesn't change anything to that
> An idea is then to convert your '' to 'NaN' beforehand and use
> np.ma.fix_invalid on the results, or to define a mask as you wanted.
>

A very indirect way, that doesn't look worth the trouble in this case would be

>>> np.mafromtxt(StringIO(','.join(['1','','2'])), delimiter=',')
masked_array(data = [1.0 -- 2.0],
             mask = [False  True False],
       fill_value = 1e+020)

>>> np.genfromtxt(StringIO(','.join(['1','','2'])), delimiter=',')
array([  1.,  NaN,   2.])

if I understand the new functions correctly.

Josef



More information about the SciPy-User mailing list