code: def _vector_size(v):
      
      if isinstance(v, Vector):
          return len(v)
      elif type(v) in (array.array, list, tuple, xrange):
          return len(v)
      elif type(v) == np.ndarray:
          if v.ndim == 1 or (v.ndim == 2 and v.shape[1] == 1):
              return len(v)
          else:
              raise ValueError("Cannot treat an ndarray of shape %s as a vector" % str(v.shape))
      elif _have_scipy and scipy.sparse.issparse(v):
          assert v.shape[1] == 1, "Expected column vector"
          return v.shape[0]
      else:
          raise TypeError("Cannot treat type %s as a vector" % type(v))
docs: Returns the size of the vector.
  
      >>> _vector_size([1., 2., 3.])
      3
      >>> _vector_size((1., 2., 3.))
      3
      >>> _vector_size(array.array('d', [1., 2., 3.]))
      3
      >>> _vector_size(np.zeros(3))
      3
      >>> _vector_size(np.zeros((3, 1)))
      3
      >>> _vector_size(np.zeros((1, 3)))
      Traceback (most recent call last):
          ...
      ValueError: Cannot treat an ndarray of shape (1, 3) as a vector