python中的random 模块 和numpy 中的random 区别:
python:(一般只能操作一维的列表,多维也视为一维)
random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。有关sequence可以查看python手册数据模型这一章。下面是使用choice的一些例子:
print random.choice(“学习Python”)
print random.choice([“JGood”, “is”, “a”, “handsome”, “boy”])
print random.choice((“Tuple”, “List”, “Dict”))
random.shuffle
random.shuffle的函数原型为:random.shuffle(x[, random]),用于将一个列表中的元素打乱
---------------------
原文:https://blog.csdn.net/xiyuan1223/article/details/90721270
1.random.choice与random.sample
Python标准库中的random模块,可以生成随机浮点数、整数、字符串,甚至帮助我们随机选择列表序列中的一个元素,打乱一组数据等。
下面我们主要关注random.choice函数与random.sample函数。
random.choice(seq):
从一个非空序列中随机返回一个元素,比如:
import random
lists=[1,2,3,4,5,6]
for _ in range(3):
print random.choice(lists)
运行结果:
random.sample(population,k):
从一个population sequence中返回一个长度为k的list,该list中的元素是不同的。注意,这里说的不同是指不是population sequence中的同一个元素,举例如下:
import random
lists=[1,2,3,4,5,6]
lists2=[2,2,3,4,5,6]
for _ in range(3):
print random.sample(lists,3)
for _ in range(3):
print random.sample(lists2,3)
运行结果:
最后一行中的2,2并不是原始集合中的同一个2,可以理解为不放回采样,要是有同位素标记就好了......
2.numpy.random
科学计算库NumPy中也有random,与上面不太一样,下面我将对NumPy.random中的choice和sample函数进行介绍。
numpy.random.choice(a,size=None,replace=True,p=None):
从给定的一维数列(1-D array)中产生样本,该函数可以一次抽取多个样本,这与random模块中的choice不同。该函数的参数列表释义如下:
a:传入的一维数列或int,如果是int,则从np.arange(a)中进行随机采样;
size:输出的样本集合的shape,类型为int或tuple或ints,如果我们给定了该参数为(m,n,k),则该函数将会采样m*n*k个样本,如果该参数为None,则选取一个样本;
replace:是否为放回采样,True表示有放回,False表示无放回;
p:a中每项所对应的采样概率,如果未给定该函数,则表示均匀采样。
下面给出运行示例:
from numpy import random
lists=[1,2,3,4,5,6]
print random.choice(lists,size=[2,3],replace=True)
print random.choice(lists,size=[2,3],replace=False)
运行结果:
上面给出了replace参数取True和False时的对比,通过这个实验,该参数的意义也就明确了很多。那如果我们传入replace=False,同时size比原始array要大会发生什么呢?
from numpy import random
lists=[1,2,3,4,5,6]
print random.choice(lists,size=[2,4],replace=False)
运行结果:
啊哦,报错了,不过这也在我们的推测之中。
下面介绍numpy.random.sample()函数:
numpy.random.sample(size=None):
该函数返回半开区间[0.0,1.0)之间的随机浮点数。
size:输出的shape,与上面的numpy.random.choice()函数中的size参数一致。
那Python标准库的random模块与numpy.random有什么区别呢?
Python标准库的random模块处理的对象类型更宽泛一些,并不局限于数(int,float等),还可以是字符串等类型。而numpy.random则专门用于处理数学数据,所以传入的为array,这与NumPy库本身的初衷也很一致。
---------------------
原文:https://blog.csdn.net/u013745804/article/details/78433035