Normalize a matrix/vector to sum to one (probability simplex)

Share:

Description

normalize projects a vector or matrix onto the probability simplex.

If all entries (per row or column) get thresholded to 0 (since they are all negative to start with), then it sets the position of the maximum of x to 1 and leaves all other entries at 0.

Usage

1
normalize(x, byrow = TRUE, tol = 1e-06)

Arguments

x

a numeric matrix(like object).

byrow

logical; if TRUE rows are normalized; otherwise columns.

tol

a tolerance level to set values < tol to 0 (after an initial normalization). Default: tol=1e-6

Value

If x is a vector it returns the thresholded vector (see threshold) and normalized by its sum. If x is a matrix it works by column of by row (argument byrow).

See Also

threshold

Examples

1
2
3
4
5
print(normalize(c(1, 4, 2, 2, 10)))
print(normalize(c(-1, -2, -1)))
AA <- matrix(rnorm(12), ncol = 3)
print(normalize(AA, byrow = TRUE))
print(normalize(AA, byrow = FALSE))

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.