code: def ctypes2numpy(cptr, length, dtype):
      
      if not isinstance(cptr, ctypes.POINTER(ctypes.c_float)):
          raise RuntimeError('expected float pointer')
      res = np.zeros(length, dtype=dtype)
      if not ctypes.memmove(res.ctypes.data, cptr, length * res.strides[0]):
          raise RuntimeError('memmove failed')
      return res
docs: Convert a ctypes pointer array to a numpy array.