#### 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.