# Expression builders¶

xtensor provides functions to ease the build of common N-dimensional expressions. The expressions returned by these functions implement the laziness of xtensor, that is, they don’t hold any value. Values are computed upon request.

## Ones and zeros¶

`zeros(shape)`

: generates an expression containing zeros of the specified shape.`ones(shape)`

: generates an expression containing ones of the specified shape.`eye(shape, k=0)`

: generates an expression of the specified shape, with ones on the k-th diagonal.`eye(n, k = 0)`

: generates an expression of shape`(n, n)`

with ones on the k-th diagonal.

## Numerical ranges¶

`arange(start=0, stop, step=1)`

: generates numbers evenly spaced within given half-open interval.`linspace(start, stop, num_samples)`

: generates num_samples evenly spaced numbers over given interval.`logspace(start, stop, num_samples)`

: generates num_samples evenly spaced on a log scale over given interval

## Joining expressions¶

`concatenate(tuple, axis=0)`

: concatenates a list of expressions along the given axis.`stack(tuple, axis=0)`

: stacks a list of expressions along the given axis.

## Random distributions¶

Warning

xtensor uses a lazy generator for random numbers. You need to assign them or use `eval`

to keep the generated values consistent.

`rand(shape, lower, upper)`

: generates an expression of the specified shape, containing uniformly distributed random numbers in the half-open interval [lower, upper).`randint(shape, lower, upper)`

: generates an expression of the specified shape, containing uniformly distributed random integers in the half-open interval [lower, upper).`randn(shape, mean, std_dev)`

: generates an expression of the specified shape, containing numbers sampled from the Normal random number distribution.`binomial(shape, trials, prob)`

: generates an expression of the specified shape, containing numbers sampled from the binomial random number distribution.`geometric(shape, prob)`

: generates an expression of the specified shape, containing numbers sampled from the geometric random number distribution.`negative_binomial(shape, k, prob)`

: generates an expression of the specified shape, containing numbers sampled from the negative binomial random number distribution.`poisson(shape, rate)`

: generates an expression of the specified shape, containing numbers sampled from the Poisson random number distribution.`exponential(shape, rate)`

: generates an expression of the specified shape, containing numbers sampled from the exponential random number distribution.`gamma(shape, alpha, beta)`

: generates an expression of the specified shape, containing numbers sampled from the gamma random number distribution.`weibull(shape, a, b)`

: generates an expression of the specified shape, containing numbers sampled from the Weibull random number distribution.`extreme_value(shape, a, b)`

: generates an expression of the specified shape, containing numbers sampled from the extreme value random number distribution.`lognormal(shape, a, b)`

: generates an expression of the specified shape, containing numbers sampled from the Log-Normal random number distribution.`chi_squared(shape, a, b)`

: generates an expression of the specified shape, containing numbers sampled from the chi-squared random number distribution.`cauchy(shape, a, b)`

: generates an expression of the specified shape, containing numbers sampled from the Cauchy random number distribution.`fisher_f(shape, m, n)`

: generates an expression of the specified shape, containing numbers sampled from the Fisher-f random number distribution.`student_t(shape, n)`

: generates an expression of the specified shape, containing numbers sampled from the Student-t random number distribution.

## Meshes¶

`meshgrid(x1, x2,...)``

: generates N-D coordinate expressions given one-dimensional coordinate arrays`x1`

,`x2`

… If specified vectors have lengths`Ni = len(xi)`

, meshgrid returns`(N1, N2, N3,..., Nn)`

-shaped arrays, with the elements of xi repeated to fill the matrix along the first dimension for x1, the second for x2 and so on.