I suppose we could work it in to part f by having them operate on an `m x n x k` array representing points in `R^k`, but then the solution would be

    np.rollaxis(A.dot(P.swapaxes(1,2)), 0, 3)

which is really kind of messy.