AI-generated Key Takeaways
-
The
arrayReducefunction reduces elements of each array pixel in an image. -
It requires a reducer, a list of array axes to reduce, and optionally a field axis for reducers with multiple outputs.
-
The examples demonstrate reducing 1D and 2D array images using the sum and minMax reducers.
-
For reducers with multiple outputs, additional dimensions or the
fieldAxisparameter are needed to store the results.
| Usage | Returns |
|---|---|
Image.
arrayReduce
(reducer, axes, fieldAxis
)
|
Image |
| Argument | Type | Details |
|---|---|---|
|
this:
input
|
Image | Input image. |
reducer
|
Reducer | The reducer to apply. |
axes
|
List | The list of array axes to reduce in each pixel. The output will have a length of 1 in all these axes. |
fieldAxis
|
Integer, default: null | The axis for the reducer's input and output fields. Only required if the reducer has multiple inputs or outputs. |
Examples
Code Editor (JavaScript)
// A function to print arrays for a selected pixel in the following examples. function sampArrImg ( arrImg ) { var point = ee . Geometry . Point ([ - 121 , 42 ]); return arrImg . sample ( point , 500 ). first (). get ( 'array' ); } // Create a 1D array image with length 6. var arrayImg1D = ee . Image ([ 0 , 1 , 2 , 3 , 4 , 5 ]). toArray (); print ( '1D array image (pixel)' , sampArrImg ( arrayImg1D )); // [0, 1, 2, 3, 4, 5] // Sum the elements in the 1D array image. var arrayImg1Dsum = arrayImg1D . arrayReduce ( ee . Reducer . sum (), [ 0 ]); print ( '1D array image sum (pixel)' , sampArrImg ( arrayImg1Dsum )); // [15] // Create a 2D array image with 2 rows and 3 columns. var arrayImg2D = arrayImg1D . arrayReshape ( ee . Image ([ 2 , 3 ]). toArray (), 2 ); print ( '2D array image (pixel)' , sampArrImg ( arrayImg2D )); // [[0, 1, 2], // [3, 4, 5]] // Sum 2D array image along 0-axis. var arrayImg2DsumRow = arrayImg2D . arrayReduce ( ee . Reducer . sum (), [ 0 ]); print ( '2D array image sum rows (pixel)' , sampArrImg ( arrayImg2DsumRow )); // [[3, 5, 7]] // Sum 2D array image along 1-axis. var arrayImg2DsumCol = arrayImg2D . arrayReduce ( ee . Reducer . sum (), [ 1 ]); print ( '2D array image sum columns (pixel)' , sampArrImg ( arrayImg2DsumCol )); // [[3], // [12]] // Sum 2D array image 0-axis and 1-axis. var arrayImg2DsumRowCol = arrayImg2D . arrayReduce ( ee . Reducer . sum (), [ 0 , 1 ]); print ( '2D array image sum columns (pixel)' , sampArrImg ( arrayImg2DsumRowCol )); // [[15]] // For reducers that provide several outputs (like minMax and percentile), // you need to ensure you have a dimension to hold the results. For instance, // if you want minMax for a 1D array, add a second dimension. var arrayImg1Dto2D = arrayImg1D . toArray ( 1 ); print ( '1D array image to 2D' , sampArrImg ( arrayImg1Dto2D )); // [[0], // [1], // [2], // [3], // [4], // [5]] // Calculate min and max for 2D array, use the fieldAxis parameter. var minMax1D = arrayImg1Dto2D . arrayReduce ( ee . Reducer . minMax (), [ 0 ], 1 ); print ( '1D array image minMax (pixel)' , sampArrImg ( minMax1D )); // [[0, 5]] // If your array image is 2D and you want min and max, add a third dimension. var arrayImg2Dto3D = arrayImg2D . toArray ( 2 ); print ( '2D array image to 3D' , sampArrImg ( arrayImg2Dto3D )); // [[[0], [1], [2]], // [[3], [4], [5]]] // Calculate min and max along the 0-axis, store results in 2-axis. var minMax2D = arrayImg2Dto3D . arrayReduce ( ee . Reducer . minMax (), [ 0 ], 2 ); print ( '2D array image minMax (pixel)' , sampArrImg ( minMax2D )); // [[[0, 3], // [1, 4], // [2, 5]]]
import ee import geemap.core as geemap
Colab (Python)
# A function to print arrays for a selected pixel in the following examples. def samp_arr_img ( arr_img ): point = ee . Geometry . Point ([ - 121 , 42 ]) return arr_img . sample ( point , 500 ) . first () . get ( 'array' ) # Create a 1D array image with length 6. array_img_1d = ee . Image ([ 0 , 1 , 2 , 3 , 4 , 5 ]) . toArray () display ( '1D array image (pixel):' , samp_arr_img ( array_img_1d )) # [0, 1, 2, 3, 4, 5] # Sum the elements in the 1D array image. array_img_1d_sum = array_img_1d . arrayReduce ( ee . Reducer . sum (), [ 0 ]) display ( '1D array image sum (pixel):' , samp_arr_img ( array_img_1d_sum )) # [15] # Create a 2D array image with 2 rows and 3 columns. array_img_2d = array_img_1d . arrayReshape ( ee . Image ([ 2 , 3 ]) . toArray (), 2 ) display ( '2D array image (pixel):' , samp_arr_img ( array_img_2d )) # [[0, 1, 2], # [3, 4, 5]] # Sum 2D array image along 0-axis. array_img_2d_sum_row = array_img_2d . arrayReduce ( ee . Reducer . sum (), [ 0 ]) display ( '2D array image sum rows (pixel):' , samp_arr_img ( array_img_2d_sum_row ) ) # [[3, 5, 7]] # Sum 2D array image along 1-axis. array_img_2d_sum_col = array_img_2d . arrayReduce ( ee . Reducer . sum (), [ 1 ]) display ( '2D array image sum columns (pixel):' , samp_arr_img ( array_img_2d_sum_col ) ) # [[3], # [12]] # Sum 2D array image 0-axis and 1-axis. array_img_2d_sum_row_col = array_img_2d . arrayReduce ( ee . Reducer . sum (), [ 0 , 1 ]) display ( '2D array image sum columns (pixel):' , samp_arr_img ( array_img_2d_sum_row_col ) ) # [[15]] # For reducers that provide several outputs (like minMax and percentile), # you need to ensure you have a dimension to hold the results. For instance, # if you want minMax for a 1D array, add a second dimension. array_img_1d_to_2d = array_img_1d . toArray ( 1 ) display ( '1D array image to 2D:' , samp_arr_img ( array_img_1d_to_2d )) # [[0], # [1], # [2], # [3], # [4], # [5]] # Calculate min and max for 2D array, use the fieldAxis parameter. min_max_1d = array_img_1d_to_2d . arrayReduce ( ee . Reducer . minMax (), [ 0 ], 1 ) display ( '1D array image minMax (pixel):' , samp_arr_img ( min_max_1d )) # [[0, 5]] # If your array image is 2D and you want min and max, add a third dimension. array_img_2d_to_3d = array_img_2d . toArray ( 2 ) display ( '2D array image to 3D:' , samp_arr_img ( array_img_2d_to_3d )) # [[[0], [1], [2]], # [[3], [4], [5]]] # Calculate min and max along the 0-axis, store results in 2-axis. min_max_2d = array_img_2d_to_3d . arrayReduce ( ee . Reducer . minMax (), [ 0 ], 2 ) display ( '2D array image minMax (pixel):' , samp_arr_img ( min_max_2d )) # [[[0, 3], # [1, 4], # [2, 5]]]

