How to get randomly select n elements from a list using in numpy?
<p>I have a list of vectors:</p>

<pre><code>&gt;&gt;&gt; import numpy as np
&gt;&gt;&gt; num_dim, num_data = 10, 5
&gt;&gt;&gt; data = np.random.rand(num_data, num_dim)
&gt;&gt;&gt; data
array([[ 0.0498063 ,  0.18659463,  0.30563225,  0.99681495,  0.35692358,
         0.47759707,  0.85755606,  0.39373145,  0.54677259,  0.5168117 ],
       [ 0.18034536,  0.25935541,  0.79718771,  0.28604057,  0.17165293,
         0.90277904,  0.94016733,  0.15689765,  0.79758063,  0.41250143],
       [ 0.80716045,  0.84998745,  0.17893211,  0.36206016,  0.69604008,
         0.27249491,  0.92570247,  0.446499  ,  0.34424945,  0.08576628],
       [ 0.35311449,  0.67901964,  0.71023927,  0.03120829,  0.72864953,
         0.60717032,  0.8020118 ,  0.36047207,  0.46362718,  0.12441942],
       [ 0.1955419 ,  0.02702753,  0.76828842,  0.5438226 ,  0.69407709,
         0.20865243,  0.12783666,  0.81486189,  0.95583274,  0.30157658]])
</code></pre>

<p>From the <code>data</code>, I need to randomly pick 3 vectors, I could do it with:</p>

<pre><code>&gt;&gt;&gt; import random
&gt;&gt;&gt; random.sample(data, 3)
[array([ 0.80716045,  0.84998745,  0.17893211,  0.36206016,  0.69604008,
        0.27249491,  0.92570247,  0.446499  ,  0.34424945,  0.08576628]), array([ 0.18034536,  0.25935541,  0.79718771,  0.28604057,  0.17165293,
        0.90277904,  0.94016733,  0.15689765,  0.79758063,  0.41250143]), array([ 0.35311449,  0.67901964,  0.71023927,  0.03120829,  0.72864953,
        0.60717032,  0.8020118 ,  0.36047207,  0.46362718,  0.12441942])]
</code></pre>

<p>I've checked the docs at <a href="http://docs.scipy.org/doc/numpy/reference/routines.random.html" rel="nofollow">http://docs.scipy.org/doc/numpy/reference/routines.random.html</a> and I couldn't figure out whether there is such a functionality in <code>numpy</code> as <code>random.sample()</code>. </p>

<p><strong>Is it right that the <code>numpy.random.sample()</code> isn't the same as <code>random.sample()</code>?</strong></p>

<p><strong>Is there an equivalence of <code>random.sample()</code> in <code>numpy</code>?</strong></p>

<p>As @ayhan confirmed, it can be done as such:</p>

<pre><code>&gt;&gt;&gt; data[np.random.choice(len(data), size=3, replace=False)]
array([[ 0.80716045,  0.84998745,  0.17893211,  0.36206016,  0.69604008,
         0.27249491,  0.92570247,  0.446499  ,  0.34424945,  0.08576628],
       [ 0.35311449,  0.67901964,  0.71023927,  0.03120829,  0.72864953,
         0.60717032,  0.8020118 ,  0.36047207,  0.46362718,  0.12441942],
       [ 0.1955419 ,  0.02702753,  0.76828842,  0.5438226 ,  0.69407709,
         0.20865243,  0.12783666,  0.81486189,  0.95583274,  0.30157658]])
</code></pre>

<p>From the <a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.choice.html" rel="nofollow">docs</a>:</p>

<blockquote>
  <p><strong>numpy.random.choice(a, size=None, replace=True, p=None)</strong> </p>
  
  <p>Generates a random sample from a given 1-D array</p>
</blockquote>

<p>The <code>np.random.choice(data, size=3, replace=False)</code> selects 3 elements from the list of indices of the <code>data</code> without replacement.</p>

<p>Then <code>data[...]</code> slices the index and retrieve the indices selected with <code>np.random.choice</code>.</p>

python numpy random sample choice