docstr: Return the data pointer cast to a particular c-types object.
  For example, calling ``self._as_parameter_`` is equivalent to
  ``self.data_as(ctypes.c_void_p)``. Perhaps you want to use
  the data as a pointer to a ctypes array of floating-point data:
  ``self.data_as(ctypes.POINTER(ctypes.c_double))``.
  
  The returned pointer will keep a reference to the array.
code: def data_as(self, obj):
      """
      Return the data pointer cast to a particular c-types object.
      For example, calling ``self._as_parameter_`` is equivalent to
      ``self.data_as(ctypes.c_void_p)``. Perhaps you want to use
      the data as a pointer to a ctypes array of floating-point data:
      ``self.data_as(ctypes.POINTER(ctypes.c_double))``.
  
      The returned pointer will keep a reference to the array.
      """
      # _ctypes.cast function causes a circular reference of self._data in
      # self._data._objects. Attributes of self._data cannot be released
      # until gc.collect is called. Make a copy of the pointer first then
      # let it hold the array reference. This is a workaround to circumvent
      # the CPython bug https://bugs.python.org/issue12836.
      ptr = self._ctypes.cast(self._data, obj)
      ptr._arr = self._arr
      return ptr
  
imports: import ast
  import re
  import sys
  import warnings
  from ..exceptions import DTypePromotionError
  from .multiarray import dtype, array, ndarray, promote_types
label_desc: Use image node_id 2 for calling the _ctypes obj's underlying member method code with example usage: obj.data_as(obj) and returns: ptr