On the whole, it is too confusing to not get an object of the same type back. Better to just return a delayed SubsetDropDims if dimensions are to be dropped, or a corresponding lower-dimensional SparseNdarray. If users really want the raw NumPy vectors, they can always do to_dense_array().