ArrayReduce[f,array,n]
reduces dimension n of array by applying f.
ArrayReduce[f,array,n1;;n2]
reduces dimensions n1 through n2.
ArrayReduce[f,array,{n1,n2,…}]
reduces dimensions n1, n2, etc.
ArrayReduce[f,array,{{n11,n12,…},{n21,n22,…},…}]
applies f to arrays formed by combining all dimensions nij to make each dimension i.
ArrayReduce
ArrayReduce[f,array,n]
reduces dimension n of array by applying f.
ArrayReduce[f,array,n1;;n2]
reduces dimensions n1 through n2.
ArrayReduce[f,array,{n1,n2,…}]
reduces dimensions n1, n2, etc.
ArrayReduce[f,array,{{n11,n12,…},{n21,n22,…},…}]
applies f to arrays formed by combining all dimensions nij to make each dimension i.
Details
- Array reduction, also called array aggregation, is used to compute functions such as Mean, Total or StandardDeviation along specific dimensions of an array.
- In ArrayReduce[f,array,n], f is applied to every vector along the n
dimension of array. It can be seen as a transposition where dimension n becomes the last dimension, followed by the application of f on the lowest-level vectors: - If array has dimensions {d1,d2,…}, and if the function is transforming a vector into a scalar, the results is an array that has the same dimensions as array except for dn, which is dropped.
- In ArrayReduce[f,array,n1;;n2] and ArrayReduce[f,array,{n1,n2,…}], f is applied to every vector formed by combining and flattening the specified dimensions.
- In ArrayReduce[f,array,{{n11,n12,…},{n21,n22,…},…}], f is applied to arrays of arbitrary ranks instead of vectors only.
- ArrayReduce[f,array,{n1,n2,…}] is equivalent to ArrayReduce[f,array,{{n1,n2,…}}].
Examples
open all close allBasic Examples (3)
Compute the mean of every row of a matrix:
ArrayReduce[Mean, (| | | | | |
| -- | -- | -- | -- | -- |
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |), 2]Compute the mean of every column of a matrix:
ArrayReduce[Mean, (| | | | | |
| -- | -- | -- | -- | -- |
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |), 1]array = RandomInteger[9, {3, 5, 2}]Compute the standard deviation over the second dimension:
array2 = ArrayReduce[StandardDeviation, array, 2]The resulting array is of rank 2, and the second axis has been removed:
Dimensions[array2]Visualize the input and output arrays:
MatrixForm[array] -> MatrixForm[array2]array = RandomReal[9, {3, 5, 2, 6, 4}];Reduce the dimensions of the array by computing the total over dimensions 2 and 4:
array2 = ArrayReduce[Total, array, {2, 4}]//DimensionsScope (3)
Take an array of dimensions 2×3×4:
MatrixForm[array = ArrayReshape[Alphabet[], {2, 3, 4}]]Apply head h along the first level, obtaining a result of dimensions 3×4:
ArrayReduce[Apply[h], array, 1]//MatrixFormApply head h along the second level, obtaining a result of dimensions 2×4:
ArrayReduce[Apply[h], array, 2]//MatrixFormApply head h along the third level, obtaining a result of dimensions 2×3:
ArrayReduce[Apply[h], array, 3]//MatrixFormarray = RandomInteger[9, {3, 2, 2, 3, 2}]Reduce several consecutive levels of the array:
ArrayReduce[Total, array, 2 ;; 4]This is equivalent to listing explicitly the reduced levels:
ArrayReduce[Total, array, {2, 3, 4}]The order of the given levels is irrelevant:
ArrayReduce[Total, array, {3, 4, 2}]Take an array organized by years, trimesters and months in its three levels:
MatrixForm[array = ArrayReshape[DateRange[DateObject[{2025, 1}, "Month"], DateObject[{2026, 12}, "Month"], "Month"], {2, 4, 3}]]Reduce along the third level (months), obtaining a matrix with dimensions two years by four trimesters:
ArrayReduce[f, array, 3]//MatrixFormReduce along the second level (trimesters):
ArrayReduce[f, array, 2]//MatrixFormReduce along the first level (years):
ArrayReduce[f, array, 1]//MatrixFormReduce simultaneously two levels, in three different possible ways, with results always being vectors:
ArrayReduce[f, array, {1, 2}]ArrayReduce[f, array, {2, 3}]ArrayReduce[f, array, {1, 3}]Reduce all levels at once, with a scalar result:
ArrayReduce[f, array, {1, 2, 3}]Properties & Relations (9)
ArrayReduce[f,array,n] is equivalent to ArrayReduce[f,array,{n}] for a positive integer n:
array = RandomInteger[10, {2, 4, 3}]ArrayReduce[Total, array, 2]ArrayReduce[Total, array, {2}]ArrayReduce[Total,array,n] is equivalent to Total[array,{n}]:
array = RandomInteger[100, {2, 3, 4, 5}];Table[ArrayReduce[Total, array, n] === Total[array, {n}], {n, 1, 4}]ArrayReduce[Total,array,1;;n] is equivalent to Total[array,n]:
Table[ArrayReduce[Total, array, 1 ;; n] === Total[array, n], {n, 1, 4}]For an array a of depth k, ArrayReduce[f,a,{1,…,k}] is equivalent to f[Flatten[a]]:
a = RandomInteger[10, {2, 3, 2, 3}]ArrayReduce[f, a, {1, 2, 3, 4}] === f[Flatten[a]]For an array a of depth k, ArrayReduce[f,a,{}] is equivalent to Map[f,a,{k}]:
a = RandomInteger[10, {2, 3, 2}]ArrayReduce[f, a, {}]% === Map[f, a, {3}]For an array a of depth k and a list ν={n1,n2,…,ns} of distinct levels ni≤k, ArrayReduce[f,a,ν] is equivalent to Map[f,Flatten[a,{{m1},…,{mr},ν}],{r}] with {m1,...,mr}=Complement[Range[k],ν]:
a = RandomInteger[10, {2, 3, 2, 2, 3}]ArrayReduce[f, a, {2, 5, 3}]% === Map[f, Flatten[a, {{1}, {4}, {2, 5, 3}}], {2}]For an array a of depth k and levels n1≤n2≤k, ArrayReduce[f,a,n1;;n2] is equivalent to ArrayReduce[f,a,Range[n1,n2]]:
a = RandomInteger[10, {2, 3, 3, 2}]ArrayReduce[f, a, 2 ;; 4]% === ArrayReduce[f, a, {2, 3, 4}]For an array a, ArrayReduce[f,a,{{n1,…,ns}}] is equivalent to ArrayReduce[f,a,{n1,…,ns}]:
a = RandomInteger[10, {2, 3, 3, 2}];ArrayReduce[f, a, {{3, 1, 4}}] === ArrayReduce[f, a, {3, 1, 4}]For a rectangular array a, TensorContract[a,{{i1,i2},{j1,j2},…}] is equivalent to ArrayReduce[Tr,a,{{i1,j1,…},{i2,j2,…}}]:
a = Array[Subscript[x, ##]&, {1, 2, 3, 2, 3, 2, 3, 2}];TensorContract[a, {{2, 6}, {3, 7}, {4, 8}}]% === ArrayReduce[Tr, a, {{2, 3, 4}, {6, 7, 8}}]AggregationLayer[f,levels][array] can also be expressed as ArrayReduce[f,array,levels]:
array = RandomReal[1, {1, 2, 3, 4}];AggregationLayer[Mean, {1, 3, 4}][array]ArrayReduce[Mean, array, {1, 3, 4}]Related Guides
History
Text
Wolfram Research (2020), ArrayReduce, Wolfram Language function, https://reference.wolfram.com/language/ref/ArrayReduce.html.
CMS
Wolfram Language. 2020. "ArrayReduce." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ArrayReduce.html.
APA
Wolfram Language. (2020). ArrayReduce. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ArrayReduce.html
BibTeX
@misc{reference.wolfram_2026_arrayreduce, author="Wolfram Research", title="{ArrayReduce}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/ArrayReduce.html}", note=[Accessed: 15-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_arrayreduce, organization={Wolfram Research}, title={ArrayReduce}, year={2020}, url={https://reference.wolfram.com/language/ref/ArrayReduce.html}, note=[Accessed: 15-June-2026]}