Remove Rows the IDL Way
QUESTION: I guess I can figure out how to remove rows of a 2D array with loops and array subscripting, but the code is not the least bit elegant. Can you show me the IDL Way to remove rows from a 2D array?
![]()
ANSWER: Sure. This answer comes courtesy of JD Smith.
Consider the following 2D array.
IDL> array = Indgen(3, 6)
IDL> Print, array
0 1 2
3 4 5
6 7 8
9 10 11
12 13 14
15 16 17
Suppose we wish to remove the 2nd and 4th rows, given by the indices 1 and 3. We could do it like this.
IDL> dims = Size(array, /Dimensions)
IDL> rows = [1,3]
IDL> shortArray = array[*, Where(~Histogram(rows, MIN=0, MAX=dims[1]-1), /NULL)]
IDL> Print, shortArray
0 1 2
6 7 8
12 13 14
15 16 17
You can find a short program, named RemoveRows, that will implement this algorithm.
IDL> Print, RemoveRows(array, rows)
0 1 2
6 7 8
12 13 14
15 16 17
![]()
Version of IDL used to prepare this article: IDL 7.1.1.
![]()
![]()
Copyright ©
1996–2018 Fanning Software Consulting, Inc.
Written: 17 May 2011
