def [](*input_indexes)
      # Get array of positions indexes
      positions = @index.pos(*input_indexes)

      # If one object is asked return it
      return @data[positions] if positions.is_a? Numeric

      # Form a new Vector using positional indexes
      Daru::Vector.new(
        positions.map { |loc| @data[loc] },
        name: @name,
        index: @index.subset(*input_indexes), dtype: @dtype
      )
    end
def [](*input_indexes)
      # Get array of positions indexes
      positions = @index.pos(*input_indexes)

      # If one object is asked return it
      return @data[positions] if positions.is_a? Numeric

      # Form a new Vector using positional indexes
      Daru::Vector.new(
        positions.map { |loc| @data[loc] },
        name: @name,
        index: @index.subset(*input_indexes), dtype: @dtype
      )
    end
Get one or more elements with specified index or a range.

 == Usage
   # For vectors employing single layer Index

   v[:one, :two] # => Daru::Vector with indexes :one and :two
   v[:one]       # => Single element
   v[:one..:three] # => Daru::Vector with indexes :one, :two and :three

   # For vectors employing hierarchial multi index