random_array#
- scipy.sparse.random_array(shape, *, density=0.01, format='coo', dtype=None, rng=None, data_sampler=None)[Quelle]#
Gibt ein Sparse-Array mit gleichmäßig zufälligen Zahlen in [0, 1) zurück
Gibt ein Sparse-Array mit der angegebenen Form und Dichte zurück, wobei die Werte gleichmäßig zufällig im Bereich [0, 1) generiert werden.
- Parameter:
- shapeint oder Tupel von ints
Form des Arrays
- densityreal, optional (Standard: 0.01)
Dichte der erzeugten Matrix: Eine Dichte von eins bedeutet eine volle Matrix, eine Dichte von 0 bedeutet eine Matrix ohne Nicht-Null-Elemente.
- formatstr, optional (Standard: ‘coo’)
Format der dünnbesetzten Matrix.
- dtypedtype, optional (Standard: np.float64)
Typ der Werte der zurückgegebenen Matrix.
- rng{None, int,
numpy.random.Generator}, optional Wenn rng als Schlüsselwort übergeben wird, werden andere Typen als
numpy.random.Generatorannumpy.random.default_rngübergeben, um einenGeneratorzu instanziieren. Wenn rng bereits eineGenerator-Instanz ist, dann wird die bereitgestellte Instanz verwendet. Geben Sie rng für reproduzierbares Funktionsverhalten an.Wenn dieses Argument positional übergeben wird oder random_state als Schlüsselwort übergeben wird, gilt das ältere Verhalten für das Argument random_state.
Wenn random_state None ist (oder
numpy.random), wird die Singleton-Instanznumpy.random.RandomStateverwendet.Wenn random_state eine Ganzzahl ist, wird eine neue
RandomState-Instanz verwendet, die mit random_state initialisiert wurde.Wenn random_state bereits eine
Generator- oderRandomState-Instanz ist, wird diese Instanz verwendet.
Geändert in Version 1.15.0: Im Rahmen des SPEC-007-Übergangs von der Verwendung von
numpy.random.RandomStatezunumpy.random.Generatorwurde dieser Schlüsselwortparameter von random_state zu rng geändert. Für einen Übergangszeitraum werden beide Schlüsselwortparameter weiterhin funktionieren, obwohl nur einer gleichzeitig angegeben werden kann. Nach der Übergangszeit werden Funktionsaufrufe, die den random_state-Schlüsselwortparameter verwenden, Warnungen ausgeben. Das Verhalten von sowohl random_state als auch rng ist oben beschrieben, aber nur der rng-Schlüsselwortparameter sollte in neuem Code verwendet werden.Dieser Zufallszustand wird zum Stichprobenziehen von
indices(der Sparsity-Struktur) und standardmäßig auch für die Datenwerte verwendet (siehe data_sampler).- data_samplercallable, optional (Standard hängt von dtype ab)
Sampler für zufällige Datenwerte mit dem Schlüsselwortargument
size. Diese Funktion sollte ein einzelnes Schlüsselwortargumentsizeentgegennehmen, das die Länge ihres zurückgegebenen ndarrays angibt. Sie wird verwendet, um die Nicht-Null-Werte in der Matrix zu generieren, nachdem deren Positionen gewählt wurden. Standardmäßig werden gleichmäßige [0, 1)-Zufallswerte verwendet, es sei denn, dtype ist ein Integer (standardmäßig gleichmäßige Integer dieses dtypes) oder komplex (standardmäßig gleichmäßig über dem Einheitsquadrat in der komplexen Ebene). Für diese wird der rng verwendet, z. B.rng.uniform(size=size).
- Rückgabe:
- resSparse-Array
Beispiele
Übergabe einer
np.random.Generator-Instanz für bessere Leistung>>> import numpy as np >>> import scipy as sp >>> rng = np.random.default_rng()
Standardmäßiges Stichprobenziehen gleichmäßig aus [0, 1)
>>> S = sp.sparse.random_array((3, 4), density=0.25, rng=rng)
Bereitstellen eines Samplers für die Werte
>>> rvs = sp.stats.poisson(25, loc=10).rvs >>> S = sp.sparse.random_array((3, 4), density=0.25, ... rng=rng, data_sampler=rvs) >>> S.toarray() array([[ 36., 0., 33., 0.], # random [ 0., 0., 0., 0.], [ 0., 0., 36., 0.]])
Bereitstellen eines Samplers für uint-Werte
>>> def random_uint32_to_100(size=None): ... return rng.integers(100, size=size, dtype=np.uint32) >>> S = sp.sparse.random_array((3, 4), density=0.25, rng=rng, ... data_sampler=random_uint32_to_100)
Erstellen einer benutzerdefinierten Verteilung. Dieses Beispiel erstellt eine quadrierte Normalverteilung aus np.random
>>> def np_normal_squared(size=None, rng=rng): ... return rng.standard_normal(size) ** 2 >>> S = sp.sparse.random_array((3, 4), density=0.25, rng=rng, ... data_sampler=np_normal_squared)
Oder wir können es aus sp.stats-Stil rvs-Funktionen erstellen
>>> def sp_stats_normal_squared(size=None, rng=rng): ... std_normal = sp.stats.distributions.norm_gen().rvs ... return std_normal(size=size, random_state=rng) ** 2 >>> S = sp.sparse.random_array((3, 4), density=0.25, rng=rng, ... data_sampler=sp_stats_normal_squared)
Oder wir können sp.stats rv_continuous oder rv_discrete unterklassifizieren
>>> class NormalSquared(sp.stats.rv_continuous): ... def _rvs(self, size=None, random_state=rng): ... return rng.standard_normal(size) ** 2 >>> X = NormalSquared() >>> Y = X().rvs >>> S = sp.sparse.random_array((3, 4), density=0.25, ... rng=rng, data_sampler=Y)