4.2 Array size and dimension function
The size of an array or matrix can be obtained using the dims()
function. The dims()
function is defined to take an argument
consisting of any variable with up to 8 array dimensions (and up to 2
additional matrix dimensions) and returns an array of integers with
the dimensions. For example, if two variables are declared as
follows,
real x[7,8,9];
matrix[8,9] y[7];
then calling dims(x)
or dims(y)
returns an integer array of size 3
containing the elements 7, 8, and 9 in that order.
The size()
function extracts the number of elements in an array.
This is just the top-level elements, so if the array is declared as
real a[M,N];
the size of a
is M
.
The function num_elements
, on the other hand, measures all of the
elements, so that the array a
above has \(M \times N\) elements.
The specialized functions rows()
and cols()
should be used to
extract the dimensions of vectors and matrices.
int[]
dims
(T x)
Return an integer array containing the dimensions of x; the type of
the argument T can be any Stan type with up to 8 array dimensions.
int
num_elements
(T[] x)
Return the total number of elements in the array x including all
elements in contained arrays, vectors, and matrices. T can be any
array type. For example, if x
is of type real[4,3]
then
num_elements(x)
is 12, and if y
is declared as matrix[3,4] y[5]
,
then size(y)
evaluates to 60.
int
size
(T[] x)
Return the number of elements in the array x; the type of the array T
can be any type, but the size is just the size of the top level array,
not the total number of elements contained. For example, if x
is of
type real[4,3]
then size(x)
is 4.