
dimsizes
Returns the dimension sizes of the input variable.
Prototype
function dimsizes ( var ) return_val [*] : integer or long
Arguments
varAny NCL variable.
Return value
An array of the same length as the number of dimensions of data. In versions 5.x or earlier, this function always returns an integer array. In versions 6.0.0 or later, this function may return a long array. See below.
Description
The dimsizes function returns an array of dimension sizes for the parameter data. Each index in the array corresponds to the dimension number of the same value.
As of version 6.0.0, this function will return type "long" if the product of the dimension sizes is greater than or equal to 2 GB.
If the dimension sizes are also desired, then dimsizes returns the dimension sizes in the same order as the dimension names returned from getvardims / getvardimnames.
See Also
getvardims, getvardimnames, typeof, sizeof, new, default_fillvalue, set_default_fillvalue,
Examples
Example 1
x = (/ (/1,2,3/), (/4,5,6/) /) print(dimsizes(x)) ; should be (/2,3/)
Example 2
Read a variable off a NetCDF file and print the dimension sizes and names.
a = addfile("$NCARG_ROOT/lib/ncarg/data/cdf/meccatemp.cdf","r") t = a->t print(getvardimnames(t) + " : " + dimsizes(t))Output:
(0) time : 31 (1) lat : 40 (2) lon : 49
Example 3
You can use dimsizes to return the rank (that is, the number of dimensions) of a variable:
x = new((/20,10,30,10,10/),float) rank = dimsizes(dimsizes(x)) ; rank should be 5
Example 4
Assume x is a 4D array dimensioned ntim x klev x nlat x mlon. You can use dimsizes to assign the dimension sizes to individual variables:
dsizes_x = dimsizes(x) ntim = dsizes_x(0) klev = dsizes_x(1) nlat = dsizes_x(2) mlon = dsizes_x(3)
Example 5
If you are running NCL V6.x on a 64-bit machine, then note how changing the size of the array can change whether dimsizes returns an "int" or a "long".
isize = tolong(2^31) ; 2147483648 isizem1 = isize - 1 ; dimsizes will return int x1dm1 = new(isizem1,float) x1dm1_dims = dimsizes(x1dm1) print(x1dm1_dims) ; int ; dimsizes will return long x1d = new(isize,float) x1d_dims = dimsizes(x1d) print(x1d_dims) ; dimsizes will return long lng_dims = (/8,8,8,8,8,8,8,8,8,16l/) ; The product is == 2 GB xnd = new(lng_dims,integer) xnd_dims = dimsizes(xnd) print(xnd_dims)