numpy.random.RandomState.choice¶
method

RandomState.
choice
(a, size=None, replace=True, p=None)¶ Generates a random sample from a given 1D array
New in version 1.7.0.
Note
New code should use the
choice
method of adefault_rng()
instance instead; see randomquickstart. Parameters
 a1D arraylike or int
If an ndarray, a random sample is generated from its elements. If an int, the random sample is generated as if a were np.arange(a)
 sizeint or tuple of ints, optional
Output shape. If the given shape is, e.g.,
(m, n, k)
, thenm * n * k
samples are drawn. Default is None, in which case a single value is returned. replaceboolean, optional
Whether the sample is with or without replacement
 p1D arraylike, optional
The probabilities associated with each entry in a. If not given the sample assumes a uniform distribution over all entries in a.
 Returns
 samplessingle item or ndarray
The generated random samples
 Raises
 ValueError
If a is an int and less than zero, if a or p are not 1dimensional, if a is an arraylike of 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
Notes
Sampling random rows from a 2D array is not possible with this function, but is possible with
Generator.choice
through itsaxis
keyword.Examples
Generate a uniform random sample from np.arange(5) of size 3:
>>> np.random.choice(5, 3) array([0, 3, 4]) # random >>> #This is equivalent to np.random.randint(0,5,3)
Generate a nonuniform random sample from np.arange(5) of size 3:
>>> np.random.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:
>>> np.random.choice(5, 3, replace=False) array([3,1,0]) # random >>> #This is equivalent to np.random.permutation(np.arange(5))[:3]
Generate a nonuniform random sample from np.arange(5) of size 3 without replacement:
>>> np.random.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'] >>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3]) array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'], # random dtype='<U11')