python随机选择列表中的元素_如何使用numpy从列表中随机选择n个元素?

我有一个向量列表:

>>> 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()与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)

Generates a random sample from a given 1-D array

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值