
get1Dindex
Finds the initial indices of a one-dimensional array which exactly match a user specified list of values.
Prototype
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" ; This library is automatically loaded ; from NCL V6.2.0 onward. ; No need for user to explicitly load. function get1Dindex ( x , wanted_value ) return_val : integer or long
Arguments
xA one-dimensional array.
wanted_valueA one-dimensional array of the same type as x containing the user specified values of x for which the subscripts [indices] are desired. Exact values only. NOTE: (a) It does not return the subscripts of the closest values; (b) When there is more than one exact match, the returned index is that of the first match.
Return value
A scalar or one-dimensional array containing index subscripts corresponding to wanted_value. If a match is not made for a partucular wanted_value, an _FillValue is returned.
Description
Finds the indices in a one-dimensional array which equal a user specified list
of values. The values must exist in the array to be checked. If the value
does not exist, try using closest_val.
Differs from ind in that an array of wanted values can be
checked versus only a single value. Also, the input to ind must
be made into a logical expression.
The input arguments should contain only unique values. Duplicate entries will lead to a fatal error.
NOTE: (a) It does not return the subscripts of the closest values; (b) When there is more than one exact match, the returned index is that of the first match.
See Also
get1Dindex_Repeat, get1Dindex_Collapse, get1Dindex_Exclude, closest_val, getind_latlon2d, ind
Examples
Example 1
Find the subscript indices corresponding to years specified by the user.
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" ; ; year = ispan(1870,2006,1) year_want = (/1870,1900, 1948, 1957, 1964, 1965, 1989, 2005, 2006/) i = get1Dindex(year,year_want) print(i)The output would be:
Variable: i Type: integer Total Size: 28 bytes 9 values [snip] (0) 0 (1) 30 (2) 78 (3) 87 (4) 94 (5) 95 (6) 119 (7) 135 (8) 136Example 2
Read specific dates over multiple files.
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" ; user specified dates [yyyymmdd] date_select = (/19830131, 19850202, 19890610/) diri = "./" ; input directory fili = systemfunc("cd "+diri +" ; ls uwnd*nc") print(fili) f = addfiles(diri+fili, "r") time = f[:]->time date = cd_calendar(time, -2) ; yyyymmdd idate= get1Dindex(date, date_select) ; index for each desired data u_select = f[:]->uwnd(idate,:,:,:) ; read selected dates only diro = "./" filo = "uwnd_select.nc" system("/bin/rm -f "+diro+filo) ; rm any pre-existing file f_select = addfile(diro+filo, "c") f_select->date = date(idate) f_select->uwnd = u_select