簡體   English   中英

具有不同標准偏差和每行平均值的 Numpy 數組

[英]Numpy array with different standard deviation and mean per row

我有一個包含兩列的熊貓數據框。 它們代表平均值和標准偏差。

如何執行矢量化采樣? 我想每行采樣 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()

當記錄數增加時,速度很慢。

每行具有不同標准偏差的Numpy數組

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天真版本一樣,但速度更快?

A:

np.random.normal(df[0], df[1], 1)

即使指定了多個均值/標准差,也僅返回單個標量值。

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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM