Since V 12.2 we have ArrayReduce
From the documentation:
"Array reduction, also called array aggregation, is used to compute functions such as Mean, Total or StandardDeviation along specific dimensions of an array."
mat = {{a, b, c}, {d, e, f}, {g, h, i}};
1. Apply a function along rows
ArrayReduce[f, mat, 2]
gives
{f[{a, b, c}], f[{d, e, f}], f[{g, h, i}]}
This corresponds to
ArrayReduce[Total, mat, 2] == Total[mat, {2}]
(* True *)
and
f /@ mat == ArrayReduce[f, mat, 2]
(* True *)
2. Apply a function along columns
ArrayReduce[f, mat, 1] {f[{a, d, g}], f[{b, e, h}], f[{c, f, i}]}
This replaces Map and Transpose:
ArrayReduce[f, mat, 1] == Map[f] @ Transpose[mat]
(* True *)
3. AggregationLayer
For deeply nested lists we have AggregationLayer, for which I gave some examples here:
Elegant operations on matrix rows and columns