具有不同标准偏差和每行平均值的 Numpy 数组
Numpy array with different standard deviation and mean per row
我有一个包含两列的 pandas 数据框。它们代表均值和标准差。
如何执行向量化采样?我想每行抽取 1 个观察值。
import numpy as np
import pandas as pd
rng = np.random.RandomState(0)
#n_points = 4_000_000
n_points = 10
d_dimensions = 2
X = rng.random_sample((n_points, d_dimensions))
df = pd.DataFrame(X)
display(df.head())
df['raondomized'] = df.apply(lambda x: np.random.normal(x[0], x[1], 1), axis = 1)
df.head()
记录数增加时很慢
np.random.seed(444)
arr = np.random.normal(loc=0., scale=[1., 2., 3.], size=(1000, 3)).T
print(arr.mean(axis=1))
# [-0.06678394 -0.12606733 -0.04992722]
print(arr.std(axis=1))
# [0.99080274 2.03563299 3.01426507]
显示如何以均等方式执行矢量化采样 - 如何更改它以支持不同的方式,就像我使用 apply
的原始版本一样,但速度更快?
甲:
np.random.normal(df[0], df[1], 1)
只有 returns 一个标量值,即使指定了多个 means/standard 偏差。
df['raondomized'] = np.random.normal(df[0], df[1])
重要的是不要指定元素的数量。
怎么样
np.random.normal(df[0], df[1], len(df))
您还可以指定每个规格有多少 运行(比如 1000),
np.random.normal(df[0], df[1], (1000, len(df)))
我有一个包含两列的 pandas 数据框。它们代表均值和标准差。
如何执行向量化采样?我想每行抽取 1 个观察值。
import numpy as np
import pandas as pd
rng = np.random.RandomState(0)
#n_points = 4_000_000
n_points = 10
d_dimensions = 2
X = rng.random_sample((n_points, d_dimensions))
df = pd.DataFrame(X)
display(df.head())
df['raondomized'] = df.apply(lambda x: np.random.normal(x[0], x[1], 1), axis = 1)
df.head()
记录数增加时很慢
np.random.seed(444) arr = np.random.normal(loc=0., scale=[1., 2., 3.], size=(1000, 3)).T print(arr.mean(axis=1)) # [-0.06678394 -0.12606733 -0.04992722] print(arr.std(axis=1)) # [0.99080274 2.03563299 3.01426507]
显示如何以均等方式执行矢量化采样 - 如何更改它以支持不同的方式,就像我使用 apply
的原始版本一样,但速度更快?
甲:
np.random.normal(df[0], df[1], 1)
只有 returns 一个标量值,即使指定了多个 means/standard 偏差。
df['raondomized'] = np.random.normal(df[0], df[1])
重要的是不要指定元素的数量。
怎么样
np.random.normal(df[0], df[1], len(df))
您还可以指定每个规格有多少 运行(比如 1000),
np.random.normal(df[0], df[1], (1000, len(df)))