Например, если input_a приведенный ниже возвращает следующее:
Код: Выделить всё
> input_a = np.array([1, 2, 3, 4, 5])
> random_array(input_a)
[0.51689016 0.62747792 0.16585436 0.63928942 0.30514275]
Код: Выделить всё
> input_b = np.array([3, 2, 3])
> random_array(input_b)
[0.16585436 0.62747792 0.16585436]
Основная проблема заключается в том, что входные массивы могут быть очень большими, поэтому мне нужно что-то, что может эффективно выполнять эту операцию.Моя наивная реализация заключается в следующем: я создаю список генераторов случайных чисел с входным массивом в качестве начального числа.
Код: Выделить всё
import numpy as np
def random_array(input_array):
rng_list = [np.random.default_rng(seed=i) for i in input_array]
return [rng.random() for rng in rng_list]
input_a = np.array([1, 2, 3])
input_b = np.array([3, 2, 3])
print(random_array(input_a)) # [0.5118216247002567, 0.2616121342493164, 0.08564916714362436]
print(random_array(input_b)) # [0.08564916714362436, 0.2616121342493164, 0.08564916714362436]
Как я могу это сделать, но не только эффективно?
Подробнее здесь: https://stackoverflow.com/questions/790 ... st-of-seed