python - 具有不同标准差和每行平均值的 Numpy 数组
问题描述
我有一个带有两列的熊猫数据框。它们代表平均值和标准差。
如何执行矢量化采样?我想每行采样 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
,但更快?
A:
np.random.normal(df[0], df[1], 1)
仅返回单个标量值,即使指定了多个平均值/标准偏差。
解决方案
df['raondomized'] = np.random.normal(df[0], df[1])
重要的是不要指定元素的数量。
推荐阅读
- tkinter - tkinter grid geom - 使用百分比而不是行数和列数
- javascript - 在 react-native 中根据平台显示/隐藏导航标题
- drupal - 从 Drupal 博客获取帖子的 API?
- laravel - 我已经下载了 laravel 项目,但它在根目录中没有工匠文件
- azure-active-directory - 身份验证期间无法验证重定向 uri
- azure - 从 Azure 逻辑应用中的 Onedrive 搜索文件夹中的文件
- javascript - 使用窗口消息的 Windows 服务和 Electron 本机 Windows 应用程序通信
- c# - 客户端-服务器通信和加密/解密
- excel - 如何使用 vba 使用正则表达式格式化许多电子邮件
- selenium-webdriver - 通过eclipse在TestNG中运行测试时配置错误