#python #numpy #normal-distribution
#python #numpy #нормальное распределение
Вопрос:
Я хочу сгенерировать набор данных со m
случайными точками данных k
измерений в каждой. Что приводит к размеру данных формы (m, k)
. Эти точки должны быть i.i.d. из нормального распределения со средним значением 0 и стандартным отклонением 1. Существует 2 способа генерации этих точек.
Первый способ:
import numpy as np
# Initialize the array
Z = np.zeros((m, k))
# Generate each point of each dimension independent of each other
for datapoint in range(m):
z = [np.random.standard_normal() for _ in range(k)]
Z[datapoint] = z[:]
Второй способ:
import numpy as np
# Directly sample the points
Z = np.random.normal(0, 1, (m, k))
Я думаю, что 2-й способ дает результирующий набор данных, не зависящий друг от друга, но 1-й дает набор данных i.i.d точек. Является ли это разницей между 2 частями кода?
Комментарии:
1. Что заставляет вас думать, что второе не является i.i.d.?
Ответ №1:
Я предполагаю, что standard_normal
это только normal
со «стандартными» параметрами (среднее значение = 0 и std = 1).
Давайте проверим это:
import numpy as np
rng0 = np.random.default_rng(43210)
rng1 = np.random.default_rng(43210)
print(rng0.standard_normal(10))
print(rng1.normal(0, 1, 10))
что дает:
[ 0.62824213 -1.18535536 -1.18141382 -0.74127753 -0.41945915 1.02656223 -0.64935657 1.70859865 0.47731614 -1.12700957]
[ 0.62824213 -1.18535536 -1.18141382 -0.74127753 -0.41945915 1.02656223 -0.64935657 1.70859865 0.47731614 -1.12700957]
Поэтому я думаю, что это предположение было правильным.