### 2.3.4 Selecting an arbitrary list of indices

An index list is an array of index values. Use an index list to specify an arbitrary subset of an array: x([5,1,2,1]) means the four element array [x(5), x(1), x(2), x(1)]. The where function returns an index list:

 ```list= where(x > 3.5) y= x(list) ```

These lines define the array y to be the subset of the x array, consisting of the elements greater than 3.5.

Like the result of an index range, the result of an index list is itself an array. However, the index list follows a more general rule: The dimensionality of the result is the same as the dimensionality of the index list. Hence, x([[5, 1], [2, 1]]) refers to the two dimensional array [[x(5), x(1)], [x(2), x(1)]]. The general rule for index lists is:

 ```Dimensions from the dimensions of the index list; values from the array being indexed. ```

Note that the scalar index value is a special case of an index list according to this rule.

The rule applies to multi-dimensional arrays as well: If x is a five-by-nine array, then x(, [[5, 1], [2, 1]]) is a five-by-two-by-two array. And x([[5, 1], [2, 1]], 3:6) is a two-by-two-by-four array.