bundles / scipy latest / scipy / sparse / _construct / random
function
scipy.sparse._construct:random
Signature
def random ( m , n , density = 0.01 , format = coo , dtype = None , rng = None , data_rvs = None , * , random_state = None ) Summary
Generate a sparse matrix of the given shape and density with randomly distributed values.
Extended Summary
Parameters
m, n: intshape of the matrix
density: real, optionaldensity of the generated matrix: density equal to one means a full matrix, density of 0 means a matrix with no non-zero items.
format: str, optionalsparse matrix format.
dtype: dtype, optionaltype of the returned matrix values.
rng: {None, int, `numpy.random.Generator`}, optionalIf
rngis passed by keyword, types other than numpy.random.Generator are passed to numpy.random.default_rng to instantiate aGenerator. Ifrngis already aGeneratorinstance, then the provided instance is used. Specifyrngfor repeatable function behavior.If this argument is passed by position or
random_stateis passed by keyword, legacy behavior for the argumentrandom_stateapplies:If
random_stateis None (or numpy.random), the numpy.random.RandomState singleton is used.If
random_stateis an int, a newRandomStateinstance is used, seeded withrandom_state.If
random_stateis already aGeneratororRandomStateinstance then that instance is used.
This random state will be used for sampling the sparsity structure, but not necessarily for sampling the values of the structurally nonzero entries of the matrix.
data_rvs: callable, optionalSamples a requested number of random values. This function should take a single argument specifying the length of the ndarray that it will return. The structurally nonzero entries of the sparse random matrix will be taken from the array sampled by this function. By default, uniform [0, 1) random values will be sampled using the same random state as is used for sampling the sparsity structure.
Returns
res: sparse matrix
Examples
Passing a ``np.random.Generator`` instance for better performance:import scipy as sp import numpy as np rng = np.random.default_rng() S = sp.sparse.random(3, 4, density=0.25, rng=rng)✓
rvs = sp.stats.poisson(25, loc=10).rvs S = sp.sparse.random(3, 4, density=0.25, rng=rng, data_rvs=rvs)✓
S.toarray()
✗def np_normal_squared(size=None, rng=rng): return rng.standard_normal(size) ** 2 S = sp.sparse.random(3, 4, density=0.25, rng=rng, data_rvs=np_normal_squared)✓
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(3, 4, density=0.25, rng=rng, data_rvs=sp_stats_normal_squared)✓
class NormalSquared(sp.stats.rv_continuous): def _rvs(self, size=None, random_state=rng): return rng.standard_normal(size) ** 2 X = NormalSquared() Y = X() # get a frozen version of the distribution S = sp.sparse.random(3, 4, density=0.25, rng=rng, data_rvs=Y.rvs)✓
See also
- random_array
constructs sparse arrays instead of sparse matrices
Aliases
-
scipy.sparse.random