python - 使用 mean、min、max 和 stddev 创建 2D 数据集
问题描述
我正在尝试创建一个具有特定最小值、最大值、平均值和标准差的二维数组。长话短说,我正在尝试同时使用两者
np.random.randint(min,max, size=(row,col)
np.random.normal(mu,sigma, size=(row,col)
同时。有谁知道是否已经为此制作了一个功能?我有一个标准偏差匹配函数,但不幸的是它也改变了数组的最小值和最大值,这也可能是另一种方法。
解决方案
您可以使用边界从正常空间“转换”到均匀空间的均匀分布(使用误差函数),并使用逆误差函数将其转换为正态分布。
import matplotlib.pyplot as plt
import numpy as np
from scipy import special
mean = 2
std = 3
min_value = 0
max_value = 6
min_in_standard_domain = (min_value - mean) / std
max_in_standard_domain = (max_value - mean) / std
min_in_erf_domain = special.erf(min_in_standard_domain)
max_in_erf_domain = special.erf(max_in_standard_domain)
random_uniform_data = np.random.uniform(min_in_erf_domain, max_in_erf_domain, 10000)
random_gaussianized_data = (special.erfinv(random_uniform_data) * std) + mean
fig, axes = plt.subplots(1, 2, figsize=(12, 6))
axes[0].hist(random_uniform_data, 30)
axes[1].hist(random_gaussianized_data, 30)
axes[0].set_title('uniform distribution samples')
axes[1].set_title('erfinv(uniform distribution samples)')
plt.show()
推荐阅读
- reactjs - 复选框不改变值
- spring-cloud-stream - 在启用 KPL/KCL 的情况下启动 Spring Boot 微服务时出错
- tensorflow - 多元输入多步 LSTM 时间序列预测模型的奇怪问题
- arrays - 访问从 API 解码的数组中的第一项
- ckan - CKAN 和 API 网关
- java - 为什么我的主要静态方法没有正确打印出来?
- elasticsearch - 删除了 Elasticsearch XContentBuilder.bytes
- django - 从 Django 上的 HTML 表单中选择模型实例
- android - “找不到实现方法”错误我该怎么办?
- go - golang规范中的可分配性问题