code: def array(input_array, dtype=None):
      """Construct an :class:`.NDArrayExpression`
  
      Examples
      --------
  
      >>> hl.eval(hl.nd.array([1, 2, 3, 4]))
      array([1, 2, 3, 4], dtype=int32)
  
      >>> hl.eval(hl.nd.array([[1, 2, 3], [4, 5, 6]]))
      array([[1, 2, 3],
         [4, 5, 6]], dtype=int32)
  
      >>> hl.eval(hl.nd.array(np.identity(3)))
      array([[1., 0., 0.],
         [0., 1., 0.],
         [0., 0., 1.]])
  
      >>> hl.eval(hl.nd.array(hl.range(10, 20)))
      array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19], dtype=int32)
  
      Parameters
      ----------
      input_array : :class:`.ArrayExpression`, numpy ndarray, or nested python lists/tuples
          The array to convert to a Hail ndarray.
      dtype : :class:`.HailType`
          Desired hail type.  Default: `float64`.
  
      Returns
      -------
      :class:`.NDArrayExpression`
          An ndarray based on the input array.
      """
      return _ndarray(input_array, dtype=dtype)
  
imports: from functools import reduce
  import hail
  from hail.expr.functions import _ndarray
  from hail.expr.functions import array
  from hail.expr.types import HailType, tfloat64, tfloat32, ttuple, tndarray
  from hail.typecheck import typecheck, nullable, oneof, tupleof, sequenceof
  from hail.expr.expressions import expr_int32, expr_int64, expr_tuple, expr_any, expr_array, expr_ndarray, expr_numeric, Int64Expression, cast_expr, construct_expr, expr_bool, unify_all
  from hail.expr.expressions.typed_expressions import NDArrayNumericExpression
  from hail.ir import NDArrayQR, NDArrayInv, NDArrayConcat, NDArraySVD, NDArrayEigh, Apply
label_desc: Use image node_id 1 for calling a global function with example usage: array(input_array, dtype) and returns: _ndarray