numpy.random.Generator.choice#

method

random.Generator.choice(a,size=None,replace=True,p=None,axis=0,shuffle=True)#

Generates a random sample from a given array

Parameters:
a{array_like, int}

If an ndarray, a random sample is generated from its elements.If an int, the random sample is generated from np.arange(a).

size{int, tuple[int]}, optional

Output shape. If the given shape is, e.g.,(m,n,k), thenm*n*k samples are drawn from the 1-da. Ifa has morethan one dimension, thesize shape will be inserted into theaxis dimension, so the outputndim will bea.ndim-1+len(size). Default is None, in which case a single value isreturned.

replacebool, optional

Whether the sample is with or without replacement. Default is True,meaning that a value ofa can be selected multiple times.

p1-D array_like, optional

The probabilities associated with each entry in a.If not given, the sample assumes a uniform distribution over allentries ina.

axisint, optional

The axis along which the selection is performed. The default, 0,selects by row.

shufflebool, optional

Whether the sample is shuffled when sampling without replacement.Default is True, False provides a speedup.

Returns:
samplessingle item or ndarray

The generated random samples

Raises:
ValueError

If a is an int and less than zero, if p is not 1-dimensional, ifa is array-like with a size 0, if p is not a vector ofprobabilities, if a and p have different lengths, or ifreplace=False and the sample size is greater than the populationsize.

Notes

Setting user-specified probabilities throughp uses a more general but lessefficient sampler than the default. The general sampler produces a different samplethan the optimized sampler even if each element ofp is 1 / len(a).

p must sum to 1 when cast tofloat64. To ensure this, you may wishto normalize usingp=p/np.sum(p,dtype=float).

When passinga as an integer type andsize is not specified, the returntype is a native Pythonint.

Examples

Generate a uniform random sample from np.arange(5) of size 3:

>>>rng=np.random.default_rng()>>>rng.choice(5,3)array([0, 3, 4]) # random>>>#This is equivalent to rng.integers(0,5,3)

Generate a non-uniform random sample from np.arange(5) of size 3:

>>>rng.choice(5,3,p=[0.1,0,0.3,0.6,0])array([3, 3, 0]) # random

Generate a uniform random sample from np.arange(5) of size 3 withoutreplacement:

>>>rng.choice(5,3,replace=False)array([3,1,0]) # random>>>#This is equivalent to rng.permutation(np.arange(5))[:3]

Generate a uniform random sample from a 2-D array along the firstaxis (the default), without replacement:

>>>rng.choice([[0,1,2],[3,4,5],[6,7,8]],2,replace=False)array([[3, 4, 5], # random       [0, 1, 2]])

Generate a non-uniform random sample from np.arange(5) of size3 without replacement:

>>>rng.choice(5,3,replace=False,p=[0.1,0,0.3,0.6,0])array([2, 3, 0]) # random

Any of the above can be repeated with an arbitrary array-likeinstead of just integers. For instance:

>>>aa_milne_arr=['pooh','rabbit','piglet','Christopher']>>>rng.choice(aa_milne_arr,5,p=[0.5,0.1,0.1,0.3])array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'], # random      dtype='<U11')