def reorder! order
      @index = @index.reorder order
      data_array = order.map { |i| @data[i] }
      @data = cast_vector_to @dtype, data_array, @nm_dtype
      update_position_cache
      self
    end
def reorder! order
      @index = @index.reorder order
      data_array = order.map { |i| @data[i] }
      @data = cast_vector_to @dtype, data_array, @nm_dtype
      update_position_cache
      self
    end
Reorder the vector with given positions
 @note Unlike #reindex! which takes index as input, it takes
   positions as an input to reorder the vector
 @param [Array] order the order to reorder the vector with
 @return reordered vector
 @example
   dv = Daru::Vector.new [3, 2, 1], index: ['c', 'b', 'a']
   dv.reorder! [2, 1, 0]
   # => #<Daru::Vector(3)>
   #   a   1
   #   b   2
   #   c   3