def _align(self, axis):
<EOL>inshape(self.shape, axis)<EOL>tokeys = [(a - self.split) for a in axis if a >= self.split]<EOL>tovalues = [a for a in range(self.split) if a not in axis]<EOL>if tokeys or tovalues:<EOL><INDENT>return self.swap(tovalues, tokeys)<EOL><DEDENT>else:<EOL><INDENT>return self<EOL><DEDENT>
Align spark bolt array so that axes for iteration are in the keys.

This operation is applied before most functional operators.
It ensures that the specified axes are valid, and swaps
key/value axes so that functional operators can be applied
over the correct records.

Parameters
----------
axis: tuple[int]
    One or more axes that wil be iterated over by a functional operator

Returns
-------
BoltArraySpark