<div dir="ltr"><div>Thanks for the response, but maybe I didn't explain well what I want.</div><div><br></div><div>The pipeline result is like this:</div><div><br></div><div>[( 626708.60087012,  4481781.14910498,  7.478, 0, 2, 2, 1, 0, 4, -11., 0, 0,  0.,  7.478),( 626708.34087012,  4481780.92910498,  5.418, 0, 1, 3, 1, 0, 4, -11., 0, 0,  0.,  5.418),....]</div><div><br></div><div>the name of dimensions are:</div><div> (u'X', u'Y', u'Z', u'Intensity', u'ReturnNumber', u'NumberOfReturns', u'ScanDirectionFlag', u'EdgeOfFlightLine', u'Classification', u'ScanAngleRank', u'UserData', u'PointSourceId', u'GpsTime', u'HeightAboveGround')</div><div><br></div><div>I want to split this array in two subarray: the first with element that have ReturnNumber (fifth value) dimension = 1 and the second with all others elements.</div><div><br></div><div>So, I have:</div><div><br></div><div>1st  subarray -> [( 626708.60087012,  4481781.14910498,  7.478, 0, 2, 2, 1, 0, 4, -11., 0, 0,  0.,  7.478), ....]</div><div>2nd subarray -> [( 626708.34087012,  4481780.92910498,  5.418, 0, 1, 3, 1, 0, 4, -11., 0, 0,  0.,  5.418), ....]</div><div><br></div><div>Thanks</div><div><br></div><div>Giuseppe</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-10-02 15:52 GMT+02:00 Howard Butler <span dir="ltr"><<a href="mailto:howard@hobu.co" target="_blank">howard@hobu.co</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><br><div><blockquote type="cite"><div>On Oct 2, 2017, at 5:50 AM, Giuseppe Falcone <<a href="mailto:falcone.giuseppe@gmail.com" target="_blank">falcone.giuseppe@gmail.com</a>> wrote:</div><br class="m_-8856016405514163882Apple-interchange-newline"><div><div dir="ltr">Hi to all,<div><br></div><div>I have a pipe that elaborate a las file. on the pipe.arrays[0] command I have, as result, a ndarray.<br></div><div>I want to split this array in twa subarray: the first with element that have ReturnNumber dimension = 1 and the second with all others elements.</div><div><br></div><div>There is an efficient way to do this?</div></div></div></blockquote><br></div></span><div>numpy.where is probably the cleanest way to do this purely in python <a href="https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.where.html" target="_blank">https://docs.scipy.org/<wbr>doc/numpy-1.13.0/reference/<wbr>generated/numpy.where.html</a></div><div><br></div><div><blockquote type="cite"><div>return_nos = pipe.arrays[0]['ReturnNumber']</div><div>firsts = np.where(return_nos < 2)</div></blockquote><div><div><br></div></div><div>Another way would be to write a pipeline with two readers.las, two filters.range, and a filters.merge. Both readers.las would read the same file, and each filters.range would define the range [1] of ReturnNumber you wanted in each set. Then you would use a filters.merge to bring them back together into two separate arrays. This approach is less than ideal due to the fact that you end up reading the same file twice.</div><div><br></div><div>Howard</div><div><br></div><div>[1] <a href="https://www.pdal.io/stages/filters.range.html#ranges" target="_blank">https://www.pdal.io/<wbr>stages/filters.range.html#<wbr>ranges</a></div></div></div></blockquote></div><br></div>