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() print('1D array image (pixel):', samp_arr_img(array_img_1d).getInfo()) # [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]) print('1D array image sum (pixel):', samp_arr_img(array_img_1d_sum).getInfo()) # [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) print('2D array image (pixel):', samp_arr_img(array_img_2d).getInfo()) # [[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]) print( '2D array image sum rows (pixel):', samp_arr_img(array_img_2d_sum_row).getInfo() ) # [[3, 5, 7]] # Sum 2D array image along 1-axis. array_img_2d_sum_col = array_img_2d.arrayReduce(ee.Reducer.sum(), [1]) print( '2D array image sum columns (pixel):', samp_arr_img(array_img_2d_sum_col).getInfo() ) # [[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]) print( '2D array image sum columns (pixel):', samp_arr_img(array_img_2d_sum_row_col).getInfo() ) # [[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) print('1D array image to 2D:', samp_arr_img(array_img_1d_to_2d).getInfo()) # [[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) print('1D array image minMax (pixel):', samp_arr_img(min_max_1d).getInfo()) # [[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) print('2D array image to 3D:', samp_arr_img(array_img_2d_to_3d).getInfo()) # [[[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) print('2D array image minMax (pixel):', samp_arr_img(min_max_2d).getInfo()) # [[[0, 3], # [1, 4], # [2, 5]]]