[NumPy-Tickets] [NumPy] #1576: numpy.ma.flatnotmasked_contiguous error in slice.stop values

NumPy Trac numpy-tickets@scipy....
Sun Aug 8 22:48:36 CDT 2010


#1576: numpy.ma.flatnotmasked_contiguous error in slice.stop values
-----------------------------------+----------------------------------------
 Reporter:  gdmcbain               |       Owner:  pierregm   
     Type:  defect                 |      Status:  new        
 Priority:  normal                 |   Milestone:  Unscheduled
Component:  numpy.ma               |     Version:  1.3.0      
 Keywords:  contiguous slice mask  |  
-----------------------------------+----------------------------------------
 The function numpy.ma.flatnotmasked_contiguous returns slices which
 miss the last element; for example, based on the example at
 [http://docs.scipy.org/doc/numpy/reference/generated/numpy.ma.flatnotmasked_contiguous.html]

 {{{
 import numpy as np
 a = np.arange (10)
 am = np.ma.array (a, mask = (a < 3) | (a > 8) | (a == 5))
 segments = np.ma.flatnotmasked_contiguous (am)
 print 'the masked array:', am
 print 'flatnotmasked_contiguous: ', segments
 print am[segments[0]], am[segments[1]]
 }}}


 prints

 the masked array: [-- -- -- 3 4 -- 6 7 8 --]
 flatnotmasked_contiguous:  [slice(3, 4, None), slice(6, 8, None)]
 [3] [6 7]

 which isn't really what we're after; I would have expected [3 4] and
 [6 7 8]. Compare the similarly named
 matplotlib.mlab.contiguous_regions which does have the expected
 behaviour (although its output format is different)


 {{{
 import matplotlib.mlab
 segments1 = matplotlib.mlab.contiguous_regions (am)
 print 'contiguous_regions:', segments1
 print am[slice (*segments1[0])], am[slice (*segments1[1])]
 }}}


 which prints

 contiguous_regions: [(3, 5), (6, 9)]
 [3 4] [6 7 8]

-- 
Ticket URL: <http://projects.scipy.org/numpy/ticket/1576>
NumPy <http://projects.scipy.org/numpy>
My example project


More information about the NumPy-Tickets mailing list