class_docstr: Apply function to a matrix elementwise without evaluating.
  
  Examples
  ========
  
  It can be created by calling ``.applyfunc(<function>)`` on a matrix
  expression:
  
  >>> from sympy import MatrixSymbol
  >>> from sympy.matrices.expressions.applyfunc import ElementwiseApplyFunction
  >>> from sympy import exp
  >>> X = MatrixSymbol("X", 3, 3)
  >>> X.applyfunc(exp)
  Lambda(_d, exp(_d)).(X)
  
  Otherwise using the class constructor:
  
  >>> from sympy import eye
  >>> expr = ElementwiseApplyFunction(exp, eye(3))
  >>> expr
  Lambda(_d, exp(_d)).(Matrix([
  [1, 0, 0],
  [0, 1, 0],
  [0, 0, 1]]))
  >>> expr.doit()
  Matrix([
  [E, 1, 1],
  [1, E, 1],
  [1, 1, E]])
  
  Notice the difference with the real mathematical functions:
  
  >>> exp(eye(3))
  Matrix([
  [E, 0, 0],
  [0, E, 0],
  [0, 0, E]])
class_docstr_tok: ["Apply","function","to","a","matrix","elementwise","without","evaluating",".","Examples","========","It","can","be","created","by","calling","``",".applyfunc","(","<","function",">",")","``","on","a","matrix","expression",":",">",">",">","from","sympy","import","MatrixSymbol",">",">",">","from","sympy.matrices.expressions.applyfunc","import","ElementwiseApplyFunction",">",">",">","from","sympy","import","exp",">",">",">","X","=","MatrixSymbol","(","``","X","''",",","3",",","3",")",">",">",">","X.applyfunc","(","exp",")","Lambda","(","_d",",","exp","(","_d",")",")",".","(","X",")","Otherwise","using","the","class","constructor",":",">",">",">","from","sympy","import","eye",">",">",">","expr","=","ElementwiseApplyFunction","(","exp",",","eye","(","3",")",")",">",">",">","expr","Lambda","(","_d",",","exp","(","_d",")",")",".","(","Matrix","(","[","[","1",",","0",",","0","]",",","[","0",",","1",",","0","]",",","[","0",",","0",",","1","]","]",")",")",">",">",">","expr.doit","(",")","Matrix","(","[","[","E",",","1",",","1","]",",","[","1",",","E",",","1","]",",","[","1",",","1",",","E","]","]",")","Notice","the","difference","with","the","real","mathematical","functions",":",">",">",">","exp","(","eye","(","3",")",")","Matrix","(","[","[","E",",","0",",","0","]",",","[","0",",","E",",","0","]",",","[","0",",","0",",","E","]","]",")"]
code: def shape(self):
      return self.expr.shape
  
file_path: sympy/sympy/matrices/expressions/applyfunc.py
imports: from sympy.core.expr import ExprBuilder
  from sympy.core.function import Function, FunctionClass, Lambda
  from sympy.core.symbol import Dummy
  from sympy.core.sympify import sympify, _sympify
  from sympy.matrices.expressions import MatrixExpr
  from sympy.matrices.matrixbase import MatrixBase
label_desc: Use image node_id 4 for calling the ElementwiseApplyFunction obj's underlying member method code with example usage: obj.shape() and returns: self