subclassing -- ok, probably you are right... but name -- not sure.  All the mappers they depict what action is done on the data, and e.g. FeatureSelection points that it operates on "features".  To me ProductFlattenMapper name suggests that there is a product done on  flattened data... definitely not something about (feature) attributes. But may be it is just my whining? @hanke?
may be shorter (from previously suggested) "FeatureAttributesFlattenMapper"?

> What is the advantage of storing this in .a as well?

not as well but alternatively "instead" ;)

>>  (then any I/O method to load such data would just fill it up) and then may be even recreating it on the way back (in .reverse())?
> Not really following when/how this would work. What would happen if the array is sliced later?

good point about 'slicing' loosing it... unless we agree upon the name and add necessary handling to the Dataset's __getitem__

But my point was -- trying to encapsulate the relevant information within the dataset itself so I/O could load it all up while then mapper could make use of that without requiring user to keep track of all the pieces of the puzzle.  But anyways this probably would require more of thought/work to do it right... so later

Would you happen to have a "complete" example with IO (I guess eeglab_dataset?) for this?