I would like to avoid copying the data.  That could probably be done, but would not be a great solution.

Have a look at array adaptors.  For example,

   typedef boost::numeric::ublas::shallow_array_adaptor<double> ArrayAdaptor;
   typedef boost::numeric::ublas::vector<double,ArrayAdaptor>  VecType;

   vector<double> fieldValues;
   // ... initialize fieldValues ...

   VecType vec( npts, ArrayAdaptor(npts,fieldValues) );
   vector<double>::iterator ival = fieldValues.begin();
   for( VecType::iterator i=vec.begin(); i!=vec.end(); ++i, ++ival ){
     *i = *ival;

Thanks for the suggestion, but how is this any different than copying the data?

In this case, the VecType object does not actually copy the data.