<blockquote>
<p>We can't just shuffle the dataset (data) because one set of the has 3 slices.</p>
</blockquote>

<p>It can be done, but need some change.First part is the ExtractData</p>

<pre><code> template&lt;typename T&gt;
  void ExtractData(arma::Cube&lt;T&gt; const &amp;input, arma::Cube&lt;T&gt; &amp;output,
                   size_t inputIndex, size_t outputIndex) const
  {
    outputIndex *= slice;
    inputIndex *= slice;
    output.slices(outputIndex, outputIndex + slice - 1) =
        input.slices(inputIndex, inputIndex + slice - 1);
  }
</code></pre>

<p>Second part is augmentation the order of col(if you take solution 2)</p>

<pre><code>arma::Col&lt;size_t&gt; augmentOrder(order.size()*slice);
for(size_t i = 0; i != order.size(); ++i){
    for(size_t j = 0; j != slice; ++j){
       augmentOrder(i*slice + j) = order(i);
    }
}
</code></pre>

<blockquote>
<p>Actually I have a preference for solution 1<br>
Then I would take the path of solution 1, this one could save some memory and maybe more intuitive for users.</p>
</blockquote>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br>Reply to this email directly or <a href="https://github.com/mlpack/mlpack/pull/523#issuecomment-189751957">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFLS0J7hbmTG7krR-4qIdAu_Heqysks5pojLpgaJpZM4HhWF3.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/523#issuecomment-189751957"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>