Random functions

lazylinop.wip.random.rand(shape, dtype='float', seed=None, mode='scalar', bsize=1)

Returns a new LazyLinOp of random entries (uniform distribution into [0, 1)).

Free memory cost

Whatever is the shape of the rand, it has no memory cost if 'scalar' mode is used.

Args:
shape: (tuple[int, int])

Shape of the random LazyLinOp.

dtype: (str)

numpy dtype of the random LazyLinOp.

mode: (str)
  • 'scalar': uses only random scalars, one by one to compute the multiplication. Memory cost: one scalar.

  • 'vector': uses only a random vectors, one by one to compute the multiplication. Memory cost: one vector of size shape[1].

  • 'block': computes the multiplication by generating blocks of random values (one by one). The size of each block is max(bsize, shape[1]).

  • 'array': uses a full array of random entries of dimensions shape to compute the multiplication. Memory cost: array of dimensions shape.

seed: (int)

Seed for initialization of the numpy PRNG (Mersenne Twister).

Example:
>>> from lazylinop import rand
>>> lr = rand((4, 5), seed=42)
>>> lr.toarray()
array([[0.54199389, 0.61966721, 0.05736978, 0.81190365, 0.86009402],
       [0.62760232, 0.68193335, 0.67527253, 0.48076406, 0.73472516],
       [0.15634112, 0.72853736, 0.21693909, 0.7016948 , 0.96408854],
       [0.27678254, 0.70566135, 0.88665806, 0.61825175, 0.97278719]])
Returns:

The random LazyLinOp.