class_docstr: Faster version of ArrayStep that requires the substep method that does not wrap
     the functions the step method uses.
  
  Works by setting shared variables before using the step. This eliminates the mapping
  and unmapping overhead as well as moving fewer variables around.
class_docstr_tok: ["Faster","version","of","ArrayStep","that","requires","the","substep","method","that","does","not","wrap","the","functions","the","step","method","uses",".","Works","by","setting","shared","variables","before","using","the","step",".","This","eliminates","the","mapping","and","unmapping","overhead","as","well","as","moving","fewer","variables","around","."]
docstr: Parameters
  ----------
  vars: list of sampling value variables
  shared: dict of PyTensor variable -> shared variable
  blocked: Boolean (default True)
docstr_tok: ["Parameters","--","--","--","--","--","vars",":","list","of","sampling","value","variables","shared",":","dict","of","PyTensor","variable","-",">","shared","variable","blocked",":","Boolean","(","default","True",")"]
code: def __init__(self, vars, shared, blocked=True):
      """
      Parameters
      ----------
      vars: list of sampling value variables
      shared: dict of PyTensor variable -> shared variable
      blocked: Boolean (default True)
      """
      self.vars = vars
      self.shared = {
          get_var_name(var): shared for var, shared in shared.items()
      }
      self.blocked = blocked
  
imports: from abc import abstractmethod
  from typing import Callable, List, Tuple, Union, cast
  import numpy
  from numpy.random import uniform
  from pymc.blocking import DictToArrayBijection, PointType, RaveledVars, StatsType
  from pymc.model import modelcontext
  from pymc.step_methods.compound import BlockedStep
  from pymc.util import get_var_name
label_desc: Use image node_id 1 to create a new ArrayStepShared object from inherited base classes: BlockedStep with example: obj = ArrayStepShared(vars, shared, blocked)