Announcement : All noncommercial projects registered to use Earth Engine before
April 15, 2025 must
verify noncommercial eligibility to maintain Earth Engine access.
Send feedback
ee.Array.eigen
Stay organized with collections
Save and categorize content based on your preferences.
Computes the real eigenvectors and eigenvalues of a square 2D array of A rows and A columns. Returns an array with A rows and A+1 columns, where each row contains an eigenvalue in the first column, and the corresponding eigenvector in the remaining A columns. The rows are sorted by eigenvalue, in descending order.
This implementation uses DecompositionFactory.eig() from https://ejml.org.
Usage Returns Array. eigen ()
Array
Argument Type Details this: input
Array A square, 2D array from which to compute the eigenvalue decomposition.
Examples
Code Editor (JavaScript)
print ( ee . Array ([[ 0 , 0 ], [ 0 , 0 ]]). eigen ()); // [[0,0,1],[0,1,0]]
print ( ee . Array ([[ 1 , 0 ], [ 0 , 0 ]]). eigen ()); // [[1,1,0],[0,0,1]]
print ( ee . Array ([[ 0 , 1 ], [ 0 , 0 ]]). eigen ()); // [[0,0,1],[0,1,0]]
print ( ee . Array ([[ 0 , 0 ], [ 1 , 0 ]]). eigen ()); // [[0,-1,0],[0,0,-1]]
print ( ee . Array ([[ 0 , 0 ], [ 0 , 1 ]]). eigen ()); // [[1,0,1],[0,1,0]]
print ( ee . Array ([[ 1 , 1 ], [ 0 , 0 ]]). eigen ()); // [[1,1,0],[0,-1/√2,1/√2]]
print ( ee . Array ([[ 0 , 0 ], [ 1 , 1 ]]). eigen ()); // [[1,0,-1],[0,-1/√2,1/√2]]]
print ( ee . Array ([[ 1 , 0 ], [ 1 , 0 ]]). eigen ()); // [[1,1/√2,1/√2],[0,0,1]]
print ( ee . Array ([[ 1 , 0 ], [ 0 , 1 ]]). eigen ()); // [[1,1,0],[1,0,1]]
print ( ee . Array ([[ 0 , 1 ], [ 1 , 0 ]]). eigen ()); // [[1,1/√2,1/√2],[-1,1/√2,-1/√2]]
print ( ee . Array ([[ 0 , 1 ], [ 0 , 1 ]]). eigen ()); // [[1,1/√2,1/√2],[0,1,0]]
print ( ee . Array ([[ 1 , 1 ], [ 1 , 0 ]]). eigen ()); // [[1.62,0.85,0.53],[-0.62,0.53]]
print ( ee . Array ([[ 1 , 1 ], [ 0 , 1 ]]). eigen ()); // [[1,0,1],[1,1,0]]
print ( ee . Array ([[ 1 , 0 ], [ 1 , 1 ]]). eigen ()); // [[1,-1,0],[1,0,-1]]
// [[1.62,-0.53,-0.85],[-0.62,-0.85,0.53]]
print ( ee . Array ([[ 0 , 1 ], [ 1 , 1 ]]). eigen ());
print ( ee . Array ([[ 1 , 1 ], [ 1 , 1 ]]). eigen ()); // [[2,1/√2,1/√2],[0,1/√2,-1/√2]]
var matrix = ee . Array ([
[ 1 , 0 , 0 ],
[ 0 , 1 , 0 ],
[ 0 , 0 , 1 ]]);
print ( matrix . eigen ()); // [[1,1,0,0],[1,0,1,0],[1,0,0,1]]
var matrix = ee . Array ([
[ 2 , 0 , 0 ],
[ 0 , 3 , 0 ],
[ 0 , 0 , 4 ]]);
print ( matrix . eigen ()); // [[4,0,0,1],[3,0,1,0],[2,1,0,0]]
matrix = ee . Array ([
[ 1 , 0 , 0 ],
[ 0 , 0 , 0 ],
[ 0 , 0 , 0 ]]);
print ( matrix . eigen ()); // [[1,1,0,0],[0,0,1,0],[0,0,0,1]]
matrix = ee . Array ([
[ 1 , 1 , 1 ],
[ 1 , 1 , 1 ],
[ 1 , 1 , 1 ]]);
// [[3,-0.58,-0.58,-0.58],[0,0,-1/√2,1/√2],[0,-0.82,0.41,0.41]]
print ( matrix . eigen ());
Python setup
See the
Python Environment page for information on the Python API and using
geemap
for interactive development.
import ee
import geemap.core as geemap
Colab (Python)
display ( ee . Array ([[ 0 , 0 ], [ 0 , 0 ]]) . eigen ()) # [[0, 0, 1], [0, 1, 0]]
display ( ee . Array ([[ 1 , 0 ], [ 0 , 0 ]]) . eigen ()) # [[1, 1, 0], [0,0,1]]
display ( ee . Array ([[ 0 , 1 ], [ 0 , 0 ]]) . eigen ()) # [[0, 0, 1], [0, 1, 0]]
display ( ee . Array ([[ 0 , 0 ], [ 1 , 0 ]]) . eigen ()) # [[0, -1, 0], [0, 0, -1]]
display ( ee . Array ([[ 0 , 0 ], [ 0 , 1 ]]) . eigen ()) # [[1, 0, 1], [0, 1, 0]]
# [[1, 1, 0], [0, -1/√2, 1/√2]]
display ( ee . Array ([[ 1 , 1 ], [ 0 , 0 ]]) . eigen ())
# [[1, 0, -1], [0, -1/√2, 1/√2]]]
display ( ee . Array ([[ 0 , 0 ], [ 1 , 1 ]]) . eigen ())
# [[1, 1/√2, 1/√2], [0, 0, 1]]
display ( ee . Array ([[ 1 , 0 ], [ 1 , 0 ]]) . eigen ())
display ( ee . Array ([[ 1 , 0 ], [ 0 , 1 ]]) . eigen ()) # [[1, 1, 0], [1, 0, 1]]
# [[1, 1/√2, 1/√2], [-1, 1/√2, -1/√2]]
display ( ee . Array ([[ 0 , 1 ], [ 1 , 0 ]]) . eigen ())
# [[1, 1/√2, 1/√2], [0, 1, 0]]
display ( ee . Array ([[ 0 , 1 ], [ 0 , 1 ]]) . eigen ())
# [[1.62, 0.85, 0.53], [-0.62, 0.53]]
display ( ee . Array ([[ 1 , 1 ], [ 1 , 0 ]]) . eigen ())
display ( ee . Array ([[ 1 , 1 ], [ 0 , 1 ]]) . eigen ()) # [[1, 0, 1], [1, 1, 0]]
display ( ee . Array ([[ 1 , 0 ], [ 1 , 1 ]]) . eigen ()) # [[1, -1, 0], [1, 0, -1]]
# [[1.62, -0.53, -0.85], [-0.62, -0.85, 0.53]]
display ( ee . Array ([[ 0 , 1 ], [ 1 , 1 ]]) . eigen ())
# [[2, 1/√2, 1/√2], [0, 1/√2, -1/√2]]
display ( ee . Array ([[ 1 , 1 ], [ 1 , 1 ]]) . eigen ())
matrix = ee . Array ([
[ 1 , 0 , 0 ],
[ 0 , 1 , 0 ],
[ 0 , 0 , 1 ]])
display ( matrix . eigen ()) # [[1, 1, 0, 0], [1, 0, 1, 0], [1, 0, 0, 1]]
matrix = ee . Array ([
[ 2 , 0 , 0 ],
[ 0 , 3 , 0 ],
[ 0 , 0 , 4 ]])
display ( matrix . eigen ()) # [[4, 0, 0, 1], [3, 0, 1, 0], [2, 1, 0, 0]]
matrix = ee . Array ([
[ 1 , 0 , 0 ],
[ 0 , 0 , 0 ],
[ 0 , 0 , 0 ]])
display ( matrix . eigen ()) # [[1, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
matrix = ee . Array ([
[ 1 , 1 , 1 ],
[ 1 , 1 , 1 ],
[ 1 , 1 , 1 ]])
# [[3, -0.58, -0.58, -0.58], [0, 0, -1/√2, 1/√2], [0, -0.82, 0.41, 0.41]]
display ( matrix . eigen ())
Send feedback
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License , and code samples are licensed under the Apache 2.0 License . For details, see the Google Developers Site Policies . Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2023-10-06 UTC.
Need to tell us more?
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-10-06 UTC."],[[["\u003cp\u003eComputes the real eigenvectors and eigenvalues of a 2D square array.\u003c/p\u003e\n"],["\u003cp\u003eReturns an array where each row represents an eigenvalue and its corresponding eigenvector.\u003c/p\u003e\n"],["\u003cp\u003eEigenvalues are sorted in descending order within the output array.\u003c/p\u003e\n"],["\u003cp\u003eUtilizes the \u003ccode\u003eDecompositionFactory.eig()\u003c/code\u003e method from the EJML library for computation.\u003c/p\u003e\n"],["\u003cp\u003eAccepts a single argument: the input 2D square array.\u003c/p\u003e\n"]]],["The `eigen()` function computes the eigenvalues and eigenvectors of a square 2D array. It takes a square 2D array as input and returns a new array where each row represents an eigenvalue and its corresponding eigenvector. The first column of each row contains the eigenvalue, and the remaining columns contain the eigenvector components. The rows are sorted in descending order by eigenvalue. It uses `DecompositionFactory.eig()` for its core calculations.\n"],null,["# ee.Array.eigen\n\nComputes the real eigenvectors and eigenvalues of a square 2D array of A rows and A columns. Returns an array with A rows and A+1 columns, where each row contains an eigenvalue in the first column, and the corresponding eigenvector in the remaining A columns. The rows are sorted by eigenvalue, in descending order.\n\n\u003cbr /\u003e\n\nThis implementation uses DecompositionFactory.eig() from https://ejml.org.\n\n| Usage | Returns |\n|-----------------|---------|\n| Array.eigen`()` | Array |\n\n| Argument | Type | Details |\n|---------------|-------|------------------------------------------------------------------------|\n| this: `input` | Array | A square, 2D array from which to compute the eigenvalue decomposition. |\n\nExamples\n--------\n\n### Code Editor (JavaScript)\n\n```javascript\nprint(ee.Array([[0, 0], [0, 0]]).eigen()); // [[0,0,1],[0,1,0]]\n\nprint(ee.Array([[1, 0], [0, 0]]).eigen()); // [[1,1,0],[0,0,1]]\nprint(ee.Array([[0, 1], [0, 0]]).eigen()); // [[0,0,1],[0,1,0]]\nprint(ee.Array([[0, 0], [1, 0]]).eigen()); // [[0,-1,0],[0,0,-1]]\nprint(ee.Array([[0, 0], [0, 1]]).eigen()); // [[1,0,1],[0,1,0]]\n\nprint(ee.Array([[1, 1], [0, 0]]).eigen()); // [[1,1,0],[0,-1/√2,1/√2]]\nprint(ee.Array([[0, 0], [1, 1]]).eigen()); // [[1,0,-1],[0,-1/√2,1/√2]]]\n\nprint(ee.Array([[1, 0], [1, 0]]).eigen()); // [[1,1/√2,1/√2],[0,0,1]]\nprint(ee.Array([[1, 0], [0, 1]]).eigen()); // [[1,1,0],[1,0,1]]\nprint(ee.Array([[0, 1], [1, 0]]).eigen()); // [[1,1/√2,1/√2],[-1,1/√2,-1/√2]]\nprint(ee.Array([[0, 1], [0, 1]]).eigen()); // [[1,1/√2,1/√2],[0,1,0]]\n\nprint(ee.Array([[1, 1], [1, 0]]).eigen()); // [[1.62,0.85,0.53],[-0.62,0.53]]\nprint(ee.Array([[1, 1], [0, 1]]).eigen()); // [[1,0,1],[1,1,0]]\nprint(ee.Array([[1, 0], [1, 1]]).eigen()); // [[1,-1,0],[1,0,-1]]\n// [[1.62,-0.53,-0.85],[-0.62,-0.85,0.53]]\nprint(ee.Array([[0, 1], [1, 1]]).eigen());\n\nprint(ee.Array([[1, 1], [1, 1]]).eigen()); // [[2,1/√2,1/√2],[0,1/√2,-1/√2]]\n\nvar matrix = ee.Array([\n [1, 0, 0],\n [0, 1, 0],\n [0, 0, 1]]);\nprint(matrix.eigen()); // [[1,1,0,0],[1,0,1,0],[1,0,0,1]]\n\nvar matrix = ee.Array([\n [2, 0, 0],\n [0, 3, 0],\n [0, 0, 4]]);\nprint(matrix.eigen()); // [[4,0,0,1],[3,0,1,0],[2,1,0,0]]\n\nmatrix = ee.Array([\n [1, 0, 0],\n [0, 0, 0],\n [0, 0, 0]]);\nprint(matrix.eigen()); // [[1,1,0,0],[0,0,1,0],[0,0,0,1]]\n\nmatrix = ee.Array([\n [1, 1, 1],\n [1, 1, 1],\n [1, 1, 1]]);\n// [[3,-0.58,-0.58,-0.58],[0,0,-1/√2,1/√2],[0,-0.82,0.41,0.41]]\nprint(matrix.eigen());\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\ndisplay(ee.Array([[0, 0], [0, 0]]).eigen()) # [[0, 0, 1], [0, 1, 0]]\n\ndisplay(ee.Array([[1, 0], [0, 0]]).eigen()) # [[1, 1, 0], [0,0,1]]\ndisplay(ee.Array([[0, 1], [0, 0]]).eigen()) # [[0, 0, 1], [0, 1, 0]]\ndisplay(ee.Array([[0, 0], [1, 0]]).eigen()) # [[0, -1, 0], [0, 0, -1]]\ndisplay(ee.Array([[0, 0], [0, 1]]).eigen()) # [[1, 0, 1], [0, 1, 0]]\n\n# [[1, 1, 0], [0, -1/√2, 1/√2]]\ndisplay(ee.Array([[1, 1], [0, 0]]).eigen())\n\n# [[1, 0, -1], [0, -1/√2, 1/√2]]]\ndisplay(ee.Array([[0, 0], [1, 1]]).eigen())\n\n# [[1, 1/√2, 1/√2], [0, 0, 1]]\ndisplay(ee.Array([[1, 0], [1, 0]]).eigen())\ndisplay(ee.Array([[1, 0], [0, 1]]).eigen()) # [[1, 1, 0], [1, 0, 1]]\n\n# [[1, 1/√2, 1/√2], [-1, 1/√2, -1/√2]]\ndisplay(ee.Array([[0, 1], [1, 0]]).eigen())\n\n# [[1, 1/√2, 1/√2], [0, 1, 0]]\ndisplay(ee.Array([[0, 1], [0, 1]]).eigen())\n\n# [[1.62, 0.85, 0.53], [-0.62, 0.53]]\ndisplay(ee.Array([[1, 1], [1, 0]]).eigen())\ndisplay(ee.Array([[1, 1], [0, 1]]).eigen()) # [[1, 0, 1], [1, 1, 0]]\ndisplay(ee.Array([[1, 0], [1, 1]]).eigen()) # [[1, -1, 0], [1, 0, -1]]\n\n# [[1.62, -0.53, -0.85], [-0.62, -0.85, 0.53]]\ndisplay(ee.Array([[0, 1], [1, 1]]).eigen())\n\n# [[2, 1/√2, 1/√2], [0, 1/√2, -1/√2]]\ndisplay(ee.Array([[1, 1], [1, 1]]).eigen())\n\nmatrix = ee.Array([\n [1, 0, 0],\n [0, 1, 0],\n [0, 0, 1]])\ndisplay(matrix.eigen()) # [[1, 1, 0, 0], [1, 0, 1, 0], [1, 0, 0, 1]]\n\nmatrix = ee.Array([\n [2, 0, 0],\n [0, 3, 0],\n [0, 0, 4]])\ndisplay(matrix.eigen()) # [[4, 0, 0, 1], [3, 0, 1, 0], [2, 1, 0, 0]]\n\nmatrix = ee.Array([\n [1, 0, 0],\n [0, 0, 0],\n [0, 0, 0]])\ndisplay(matrix.eigen()) # [[1, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]\n\nmatrix = ee.Array([\n [1, 1, 1],\n [1, 1, 1],\n [1, 1, 1]])\n# [[3, -0.58, -0.58, -0.58], [0, 0, -1/√2, 1/√2], [0, -0.82, 0.41, 0.41]]\ndisplay(matrix.eigen())\n```"]]