Python 如何在numpy中使用从列表中随机选择n个元素?

Python 如何在numpy中使用从列表中随机选择n个元素?,python,numpy,random,choice,Python,Numpy,Random,Choice,我有一个向量列表: >>> import numpy as np >>> num_dim, num_data = 10, 5 >>> data = np.random.rand(num_data, num_dim) >>> data array([[ 0.0498063 , 0.18659463, 0.30563225, 0.99681495, 0.35692358, 0.47759707, 0.

我有一个向量列表:

>>> import numpy as np
>>> num_dim, num_data = 10, 5
>>> data = np.random.rand(num_data, num_dim)
>>> 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]])
数据中
,我需要随机选取3个向量,我可以使用:

>>> import random
>>> 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])]
我检查了上的文档,无法确定
numpy
中是否有类似
random.sample()
的功能

numpy.random.sample()与
random.sample()
不同,这对吗?


numpy
中是否存在
random.sample()
的等价物?

正如@ayhan所确认的,可以这样做:

>>> 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]])
从:

numpy.random.choice(a,size=None,replace=True,p=None)

从给定的一维数组生成随机样本

np.random.choice(data,size=3,replace=False)
数据的索引列表中选择3个元素,而不进行替换


然后
data[…]
对索引进行切片,并检索使用
np.random.choice

选择的索引。我想您正在寻找
np.random.choice
。尽管您需要传递
replace=False
,它的行为就像
random.sample
。您想做什么?
numpy.random.sample
do(或not do)你想(或不想)它做什么?@brenbarn我需要从向量列表中随机选取n个元素。@ayhan,类似于:
data[np.random.choice(range(len(data)),size=3,replace=False)]
?是的,没错。您不需要
范围
。您可以传递一个整数,然后它将从
np.arange(n)
中进行选择。