docs: def is_nparray(u, dtype=None, dims=None):
      '''
      is_nparray(u) yields True if u is an instance of a numpy array and False otherwise.
      is_nparray(u, dtype) yields True if is_nparray(u) and the dtype of u is a sub-dtype of the given
        dtype.
      is_nparray(u, dtype, dims) yields True if is_nparray(u, dtype) and the number of dimensions is
        equal to dims (note that dtype may be set to None for no dtype requirement).
      
      Notes:
        * Either dims or dtype may be None to indicate no requirement; additionally, either may be a
          tuple to indicate that the dtype or dims may be any of the given values.
        * If u is a quantity, then this is equivalent to querying mag(u).
  
      See also: is_npscalar, is_npvector, is_npmatrix, is_array, is_scalar, is_vector, is_matrix
      '''
      if   is_quantity(u):                return is_nparray(mag(u), dtype=dtype, dims=dims)
      elif not isinstance(u, np.ndarray): return False
      # it's an array... check dtype
      if dtype is not None:
          if not any(np.issubdtype(u.dtype, d) for d in numpy_type(dtype)): return False
      # okay, the dtype is fine; check the dims
      if dims is None: return True
      if isinstance(dims, (tuple,list)): return len(u.shape) in dims
      else:                              return len(u.shape) == dims