los Generator proporciona acceso a una amplia gama de distribuciones y sirvió como reemplazo de RandomState. La principal diferencia entre los dos es que Generator se basa en un BitGenerator adicional para administrar el estado y generar los bits aleatorios, que luego se transforman en valores aleatorios a partir de distribuciones útiles. El BitGenerator predeterminado utilizado por Generator es PCG64. El BitGenerator se puede cambiar pasando un BitGenerator instanciado a Generator.

numpy.random.default_rng()

Construya un nuevo generador con el BitGenerator predeterminado (PCG64).

Parámetros
seedNone, int, array_like[ints], SeedSequence, BitGenerator, Generator, optional

Una semilla para inicializar el BitGenerator. Si es Ninguno, se extraerá del sistema operativo una nueva e impredecible entropía. Si una int o array_like[ints] se pasa, luego se pasará a SeedSequence para derivar la inicial BitGenerator estado. También se puede pasar en un SeedSequence ejemplo. Además, cuando pasa un BitGenerator, será envuelto por Generator. Si pasa un Generator, será devuelto inalterado.

Devoluciones
Generador

El objeto generador inicializado.

Notas

Si seed no es un BitGenerator o un Generator, un nuevo BitGenerator se instancia. Esta función no administra una instancia global predeterminada.

Ejemplos de

default_rng es el constructor recomendado para la clase de número aleatorio Generator. Aquí hay varias formas en que podemos construir un generador de números aleatorios usando default_rng y el Generator clase.

Aquí usamos default_rng para generar un flotador aleatorio:

>>>import numpy as np
>>> rng = np.random.default_rng(12345)>>>print(rng)
Generator(PCG64)>>> rfloat = rng.random()>>> rfloat
0.22733602246716966>>>type(rfloat)<class'float'>

Aquí usamos default_rng para generar 3 enteros aleatorios entre 0 (inclusive) y 10 (exclusivo):

>>>import numpy as np
>>> rng = np.random.default_rng(12345)>>> rints = rng.integers(low=0, high=10, size=3)>>> rints
array([6,2,7])>>>type(rints[0])<class'numpy.int64'>

Aquí especificamos una semilla para que tengamos resultados reproducibles:

>>>import numpy as np
>>> rng = np.random.default_rng(seed=42)>>>print(rng)
Generator(PCG64)>>> arr1 = rng.random((3,3))>>> arr1
array([[0.77395605,0.43887844,0.85859792],[0.69736803,0.09417735,0.97562235],[0.7611397,0.78606431,0.12811363]])

Si salimos y reiniciamos nuestro intérprete de Python, veremos que generamos los mismos números aleatorios nuevamente:

>>>import numpy as np
>>> rng = np.random.default_rng(seed=42)>>> arr2 = rng.random((3,3))>>> arr2
array([[0.77395605,0.43887844,0.85859792],[0.69736803,0.09417735,0.97562235],[0.7611397,0.78606431,0.12811363]])
class numpy.random.Generator(bit_generator)

Contenedor para los BitGenerators.

Generator expone una serie de métodos para generar números aleatorios extraídos de una variedad de distribuciones de probabilidad. Además de los argumentos específicos de la distribución, cada método toma un argumento de palabra clave size que por defecto es None. Si size es None, luego se genera y se devuelve un único valor. Si size es un número entero, luego se devuelve una matriz 1-D llena de valores generados. Si size es una tupla, luego se llena y se devuelve una matriz con esa forma.

La función numpy.random.default_rng creará una instancia Generator con numpy predeterminado BitGenerator.

Sin garantía de compatibilidad

Generator no ofrece una garantía de compatibilidad de versiones. En particular, a medida que evolucionan mejores algoritmos, el flujo de bits puede cambiar.

Parámetros
bit_generatorBitGenerator

BitGenerator para usar como generador central.

Ver también

default_rng

Constructor recomendado para Generator.

Notas

El módulo stdlib de Python random contiene un generador de números pseudoaleatorios con una serie de métodos que son similares a los disponibles en Generator. Utiliza Mersenne Twister, y se puede acceder a este generador de bits utilizando MT19937. Generator, además de ser consciente de NumPy, tiene la ventaja de que proporciona un número mucho mayor de distribuciones de probabilidad para elegir.

Ejemplos de

>>>from numpy.random import Generator, PCG64
>>> rg = Generator(PCG64())>>> rg.standard_normal()-0.203# random

Accediendo al BitGenerator

bit_generator

Obtiene la instancia del generador de bits que usa el generador.

Datos aleatorios simples

integers(bajo[, high, size, dtype, endpoint])

Devuelve enteros aleatorios de low (inclusive) a high (exclusivo), o si el punto final = Verdadero, low (inclusive) a high (inclusivo).

random([size, dtype, out])

Devuelve flotadores aleatorios en el intervalo semiabierto [0.0, 1.0).

choice(a[, size, replace, p, axis, shuffle])

Genera una muestra aleatoria de una matriz 1-D dada

bytes(largo)

Devuelve bytes aleatorios.

Permutaciones

Los métodos para permutar aleatoriamente una secuencia son

shuffle(X[, axis])

Modifique una matriz o secuencia en el lugar mezclando su contenido.

permutation(X[, axis])

Permutar aleatoriamente una secuencia o devolver un rango permutado.

permuted(X[, axis, out])

Permutar aleatoriamente x a lo largo del eje axis.

La siguiente tabla resume los comportamientos de los métodos.

método

copiar / en el lugar

manejo de ejes

barajar

en su lugar

como si 1d

permutación

Copiar

como si 1d

permutado

ya sea (use ‘out’ para in situ)

independiente del eje

Las siguientes subsecciones proporcionan más detalles sobre las diferencias.

En el lugar frente a copia

La principal diferencia entre Generator.shuffle y Generator.permutation es eso Generator.shuffle opera en el lugar, mientras Generator.permutation devuelve una copia.

Por defecto, Generator.permuted devuelve una copia. Para operar en el lugar con Generator.permuted, pasa la misma matriz que el primer argumento y como el valor de la out parámetro. Por ejemplo,

>>> rg = np.random.default_rng()>>> x = np.arange(0,15).reshape(3,5)>>> x
array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])>>> y = rg.permuted(x, axis=1, out=x)>>> x
array([[1,0,2,4,3],# random[6,7,8,9,5],[10,14,11,13,12]])

Tenga en cuenta que cuando out se da, el valor de retorno es out:

>>> y is x
True

Manejando el axis parámetro

Una distinción importante para estos métodos es cómo manejan el axis parámetro. Ambos Generator.shuffle y Generator.permutation tratar la entrada como una secuencia unidimensional, y la axis El parámetro determina qué dimensión de la matriz de entrada se utilizará como secuencia. En el caso de una matriz bidimensional, axis=0 reorganizará, en efecto, las filas de la matriz, y axis=1 reorganizará las columnas. Por ejemplo

>>> rg = np.random.default_rng()>>> x = np.arange(0,15).reshape(3,5)>>> x
array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])>>> rg.permutation(x, axis=1)
array([[1,3,2,0,4],# random[6,8,7,5,9],[11,13,12,10,14]])

Tenga en cuenta que las columnas se han reorganizado “a granel”: los valores dentro de cada columna no han cambiado.

El método Generator.permuted trata el axis parámetro similar a cómo numpy.sort lo trata. Cada corte a lo largo del eje dado se baraja independientemente de los demás. Compare el siguiente ejemplo del uso de Generator.permuted al ejemplo anterior de Generator.permutation:

>>> rg.permuted(x, axis=1)
array([[1,0,2,4,3],# random[5,7,6,9,8],[10,14,12,13,11]])

En este ejemplo, los valores dentro de cada fila (es decir, los valores a lo largo axis=1) se han barajado de forma independiente. Esta no es una mezcla “masiva” de las columnas.

Mezcla aleatoria de secuencias que no son NumPy

Generator.shuffle funciona en secuencias que no son NumPy. Es decir, si se le da una secuencia que no es una matriz NumPy, baraja esa secuencia en el lugar. Por ejemplo,

>>> rg = np.random.default_rng()>>> a =['A','B','C','D','E']>>> rg.shuffle(a)# shuffle the list in-place>>> a
['B','D','A','E','C']# random

Distribuciones

beta(a, b[, size])

Extrae muestras de una distribución Beta.

binomial(n, p[, size])

Extrae muestras de una distribución binomial.

chisquare(df[, size])

Extrae muestras de una distribución de chi-cuadrado.

dirichlet(alfa[, size])

Extrae muestras de la distribución de Dirichlet.

exponential([scale, size])

Extrae muestras de una distribución exponencial.

f(dfnum, dfden[, size])

Extrae muestras de una distribución F.

gamma(forma[, scale, size])

Extrae muestras de una distribución gamma.

geometric(pag[, size])

Extrae muestras de la distribución geométrica.

gumbel([loc, scale, size])

Extrae muestras de una distribución de Gumbel.

hypergeometric(nbueno, nbad, nsample[, size])

Extrae muestras de una distribución hipergeométrica.

laplace([loc, scale, size])

Extraiga muestras de la distribución de Laplace o exponencial doble con una ubicación (o media) y una escala (decaimiento) especificadas.

logistic([loc, scale, size])

Extraiga muestras de una distribución logística.

lognormal([mean, sigma, size])

Extraiga muestras de una distribución logarítmica normal.

logseries(pag[, size])

Extrae muestras de una distribución en serie logarítmica.

multinomial(n, pvals[, size])

Extrae muestras de una distribución multinomial.

multivariate_hypergeometric(colores, nsample)

Genere variables a partir de una distribución hipergeométrica multivariante.

multivariate_normal(significa, cov[, size, …])

Extraiga muestras aleatorias de una distribución normal multivariante.

negative_binomial(n, p[, size])

Extrae muestras de una distribución binomial negativa.

noncentral_chisquare(df, nonc[, size])

Extraiga muestras de una distribución chi-cuadrado no central.

noncentral_f(dfnum, dfden, nonc[, size])

Extraiga muestras de la distribución F no central.

normal([loc, scale, size])

Extraiga muestras aleatorias de una distribución normal (gaussiana).

pareto(a[, size])

Dibuje muestras de una distribución de Pareto II o Lomax con una forma especificada.

poisson([lam, size])

Extrae muestras de una distribución de Poisson.

power(a[, size])

Dibuja muestras en [0, 1] a partir de una distribución de potencia con exponente positivo a – 1.

rayleigh([scale, size])

Extraiga muestras de una distribución de Rayleigh.

standard_cauchy([size])

Extraiga muestras de una distribución de Cauchy estándar con moda = 0.

standard_exponential([size, dtype, method, out])

Extrae muestras de la distribución exponencial estándar.

standard_gamma(forma[, size, dtype, out])

Extrae muestras de una distribución gamma estándar.

standard_normal([size, dtype, out])

Extraiga muestras de una distribución normal estándar (media = 0, stdev = 1).

standard_t(df[, size])

Extraiga muestras de una distribución t de Student estándar con df grados de libertad.

triangular(izquierda, modo, derecha[, size])

Dibujar muestras de la distribución triangular a lo largo del intervalo. [left, right].

uniform([low, high, size])

Extrae muestras de una distribución uniforme.

vonmises(mu, kappa[, size])

Extrae muestras de una distribución de von Mises.

wald(media, escala[, size])

Extraiga muestras de una distribución de Wald o gaussiana inversa.

weibull(a[, size])

Extrae muestras de una distribución de Weibull.

zipf(a[, size])

Extrae muestras de una distribución Zipf.