I’ve got a multidimensional DimArray
and want to map a function that summarizes across one of the dimensions. This is simple to do using mapslices
, e.g.
using DimensionalData
arr = rand(X(1:10), Y(1:20), Z(1:30))
f(z) = sum(z)
mapslices(f, arr, dims=:Z)
However, I have a function that also depends on the values of x
and y
at each slice, something like
f(x, y, zs) = sin(x) + cos(y) + sum(zs)
What’s the best way to map this function across the all the Z
slices of the array? I’ve got this,
[f(x, y, arr[X(At(x)), Y(At(y))])
for (x, y) in Iterators.product(collect.(otherdims(arr, :Z))...)]
but was hoping there might be a more streamlined solution, preferably one that would generalize for higher-dimensional arrays as well…