能否限制scipy.rvs方法生成随机数的小数位数?
限制Scipy随机样本的小数位数为4位
你可以通过两种简单方式实现保留4位小数的需求,根据样本规模选择即可:
1. 修改原循环逻辑(小样本场景)
直接在生成单个样本后,用round()函数保留4位小数:
n=1000 X_list=[] for i in range(n): X = laplace_asymmetric.rvs(loc=1, scale=0.06301609, kappa=0.69327604)*HB X_rounded = round(X, 4) # 四舍五入保留4位小数 X_list.append(X_rounded)
2. 批量生成+统一处理(大样本更高效)
利用Scipy的rvs支持size参数直接生成数组,再用numpy批量处理,比循环快得多:
import numpy as np n=1000 # 一次性生成n个样本的数组 X_array = laplace_asymmetric.rvs(loc=1, scale=0.06301609, kappa=0.69327604, size=n) * HB # 批量四舍五入到4位小数 X_rounded_array = np.round(X_array, 4) # 转成列表(如果需要列表格式的话) X_list = X_rounded_array.tolist()
可选:截断小数(不四舍五入)
如果不需要四舍五入,只想直接截断到4位小数,用以下方式:
# 单个样本截断 X_truncated = int(X * 10000) / 10000 # 数组批量截断 X_truncated_array = np.floor(X_array * 10000) / 10000
内容的提问来源于stack exchange,提问作者Jáder Vinícius
相关产品推荐
相关产品推荐

