Drop specific array dimensions that are equal to 1. This a more explicit, safer version of drop, which requires you indicate which dimensions will be dropped and errors if dimensions can't be dropped.

`array_drop(x, i)`

- x
An array

- i
Index or indices of dimensions to remove

An array

```
# Suppose we have an array with a redundant 2nd dimension
m <- array(1:25, c(5, 1, 5))
# commonly we might drop this with
drop(m)
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 1 6 11 16 21
#> [2,] 2 7 12 17 22
#> [3,] 3 8 13 18 23
#> [4,] 4 9 14 19 24
#> [5,] 5 10 15 20 25
# in this case, array_drop is the same:
mcstate::array_drop(m, 2)
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 1 6 11 16 21
#> [2,] 2 7 12 17 22
#> [3,] 3 8 13 18 23
#> [4,] 4 9 14 19 24
#> [5,] 5 10 15 20 25
# However, suppose that our matrix had, in this case, a first
# dimension that was also 1 but we did not want to drop it:
m2 <- m[1, , , drop = FALSE]
# Here, drop(m2) returns just a vector, discarding our first dimension
drop(m2)
#> [1] 1 6 11 16 21
# However, array_drop will preserve that dimension
mcstate::array_drop(m2, 2)
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 1 6 11 16 21
```