Документация Engee

Изменение формы распределений

Распределения случайных величин, представляющих собой массивы, например MultivariateDistribution или MatrixDistribution, допускают изменение формы.

# Base.reshapeFunction

reshape(d::Distribution{<:ArrayLikeVariate}, dims::Int...)
reshape(d::Distribution{<:ArrayLikeVariate}, dims::Dims)

Return a Distribution of reshape(X, dims) where X is a random variable with distribution d.

The default implementation returns a ReshapedDistribution. However, it can return more optimized distributions for specific types of distributions and numbers of dimensions. Therefore it is recommended to use reshape instead of the constructor of ReshapedDistribution.

Implementation

Since reshape(d, dims::Int...) calls reshape(d, dims::Dims), one should implement reshape(d, ::Dims) for desired distributions d.

See also: vec

# Base.vecFunction

vec(d::Distribution{<:ArrayLikeVariate})

Возвращает распределение MultivariateDistribution вектора vec(X), где X — случайная величина с распределением d.

Реализация по умолчанию возвращает ReshapedDistribution. Однако она может возвращать более оптимизированные распределения для определенных типов распределений и числа измерений. Поэтому рекомендуется использовать vec вместо конструктора ReshapedDistribution.

Реализация

Так как vec(d) определяется как reshape(d, length(d)), следует реализовать reshape(d, ::Tuple{Int}), а не vec.

См. также описание reshape.