Equivalent np.nanquantile in Julia?

Viewed 124

Is there a np.nanquantile equivalent in Julia? I have a 2D array and calculate a quantile along one axis but the array contains NaN-values. My current code block:

quantiles = Array{Float32}(undef, size(array, 1), 2)
p=0.1
quantiles[:, 1] = mapslices(x -> quantile(x, p), array, dims = 2)
quantiles[:, 2] = mapslices(x -> quantile(x, 1 - p), array, dims = 2)
1 Answers

The simplest thing to do is to use the following:

x -> quantile(filter(!isnan, x), p)

e.g.

julia> array = [1   NaN 3 4
                NaN 2   3 4]
2×4 Matrix{Float64}:
   1.0  NaN    3.0  4.0
 NaN      2.0  3.0  4.0

julia> mapslices(x -> quantile(filter(!isnan, x), 0.5), array, dims = 2)
2×1 Matrix{Float64}:
 3.0
 3.0
Related