numpy.random.Generator.choice¶
method

Generator.
choice
(a, size=None, replace=True, p=None, axis=0, shuffle=True)¶ Generates a random sample from a given 1D 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 1d a. If a has more than one dimension, the size shape will be inserted into the axis dimension, so the outputndim
will bea.ndim  1 + len(size)
. Default is None, in which case a single value is returned. replacebool, optional
Whether the sample is with or without replacement
 p1D array_like, optional
The probabilities associated with each entry in a. If not given the sample assumes a uniform distribution over all entries in a.
 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 1dimensional, if a is arraylike with a size 0, if p is not a vector of probabilities, if a and p have different lengths, or if replace=False and the sample size is greater than the population size.
See also
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 nonuniform 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 without replacement:
>>> rng.choice(5, 3, replace=False) array([3,1,0]) # random >>> #This is equivalent to rng.permutation(np.arange(5))[:3]
Generate a nonuniform random sample from np.arange(5) of size 3 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 arraylike instead 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')