python中“numpy.random.choice”的使用方法
前言
项目上的需要,需要有概率的随机选择列表中的内容。
一、“numpy.random.choice”
一开始以为“random.choice”和“numpy.random.choice”是一个函数,后来发现两个函数截然不同!
choice(a, size=None, replace=True, p=None)
a:如果是一维数组,就表示从这个一维数组中随机采样;如果是int型,就表示从0到a-1这个序列中随机采样。
size:采样结果的数量,默认为1.可以是整数,表示要采样的数量;也可以为tuple,如(m, n, k),则要采样的数量为m * n * k,size为(m, n, k)。
replace:boolean型,采样的样本是否要更换?这个地方我不太理解,测了一下发现replace指定为True时,采样的元素会有重复;当replace指定为False时,采样不会重复。
p:一个一维数组,制定了a中每个元素采样的概率,若为默认的None,则a中每个元素被采样的概率相同。
例子:
import numpy as np
particle_cloud = [[1,2,45,0.1],
[2,3,45,0.1],
[3,4,45,0.3],
[4,2,45,0.2],
[5,2,45,0.2],
[6,3,45,0.1]]
particles_w = [0.1,0.1,0.3,0.2,0.2,0.1]
particle_list = [5,2,4,5,2,2]
n_particle = len(particle_cloud)
particle_array= np.random.choice(a = n_particle,
size = n_particle,
replace=True,
p = particles_w)
print(particle_array)
结果: