如何用GSTools生成对数正态与离散随机场:5种最实用场变换完整教程

📅 2026/8/26 14:23:36
如何用GSTools生成对数正态与离散随机场:5种最实用场变换完整教程
如何用GSTools生成对数正态与离散随机场5种最实用场变换完整教程【免费下载链接】GSToolsGSTools - A geostatistical toolbox: random fields, variogram estimation, covariance models, kriging and much more项目地址: https://gitcode.com/gh_mirrors/gs/GSToolsGSTools 是一款强大的地统计学随机场生成工具包不仅能生成标准高斯随机场还内置了gstools.transform场变换模块可快速把随机场转换为对数正态随机场、二值场、离散场等多种真实场景分布。本文用 5 种最实用的场变换方法带你从零学会在 GSTools 中生成符合工程需求的空间随机场。为什么需要场变换GSTools 默认生成的是标准高斯随机场——均值为 0、对称分布、无物理偏斜但真实地质/水文问题往往不是这样渗透率、污染物浓度 → 只能取正值且偏态适合对数正态分布岩性分类砂岩/泥岩→ 只有两个值适合二值场品位等级、土壤类型 → 有限个等级适合离散场好消息是GSTools 的gstools.transform子模块源码见 src/gstools/transform/field.py、src/gstools/transform/array.py把这些常用变换全部封装好了一行代码即可完成。安装很简单pip install gstools方法一生成对数正态随机场lognormal对数正态场是水文地质模拟渗透率场时的标配。调用srf.transform方法定义于 src/gstools/field/base.py即可import gstools as gs x y range(100) model gs.Gaussian(dim2, var1, len_scale10) srf gs.SRF(model, seed20170519) srf.structured([x, y]) srf.transform(lognormal) # 也可写 normal_to_lognormal srf.plot()完整示例见 examples/07_transformations/00_log_normal.py。变换后场值全部为正且呈现典型的长尾偏态形态 除了对数正态同系列的 Box-Cox 变换boxcoxlmbda0时即对数正态可进一步用shift参数处理含零值的场。方法二生成二值场binary只需两个值的场如砂岩 / 泥岩用binary变换srf.transform(binary)分割阈值divide默认为场的均值上下取值upper/lower默认取mean ± sqrt(sill)自动保持方差完整示例examples/07_transformations/01_binary.py方法三生成离散场discrete二值场是特例discrete变换可生成任意多个等级的场import numpy as np values1 np.linspace(np.min(srf.field), np.max(srf.field), 5) srf.transform(discrete, storef1, valuesvalues1)关键参数values场最终取的一组离散值thresholds等级划分阈值支持三种方式arithmetic默认相邻等级值的算术平均equal将场划分为等份额区间自定义数组如[1, 10]按任意阈值切分一个场可以同时保存多个离散版本storef1/f2/f3命名存储方便对比。完整示例examples/07_transformations/02_discrete.py方法四Zinn Harvey 变换zinnharvey标准高斯场有个反直觉特性均值处的值连通性最强。而现实中低渗透率带往往才是最连通的。Zinn Harvey 变换可让场的低值或高值端变得连通且变换后仍保持正态分布srf.transform(zinnharvey, connhigh) # conn 可选 low 或 high完整示例examples/07_transformations/03_zinn_harvey.py方法五生成双峰场arcsin️某些物理量天然呈两头高、中间低的双峰分布GSTools 提供两种双峰变换normal_to_arcsin反正弦Arcsine分布normal_to_uquadU 二次U-quadratic分布两者默认保持原场的均值和方差也可通过a、b参数手动指定上下界srf.transform(normal_to_arcsin) # 简写 arcsin 同样有效完整示例examples/07_transformations/04_bimodal.py进阶技巧链式组合多种变换 变换支持链式组合field参数指定输入字段名store参数指定输出字段名不指定则原地变换。经典组合——强制矩 → 低值连通 → 二值化 → 取对数可模拟只有两类土壤且低渗透值最连通的渗透率场srf gs.SRF(gs.Gaussian(dim2, var1, len_scale10), mean-9, seed20170519) srf.structured([x, y]) srf.transform(force_moments, fieldfield, storef_forced) srf.transform(zinnharvey, fieldf_forced, storef_zinnharvey, connlow) srf.transform(binary, fieldf_zinnharvey, storef_binary) srf.transform(lognormal, fieldf_binary, storef_result) srf.plot(fieldf_result)完整示例examples/07_transformations/05_combinations.py5种变换速查表 变换方法简写分布结果典型应用normal_to_lognormallognormal对数正态渗透率场、浓度场binary—二值岩性分类、含水/隔水层discrete—多级离散品位等级、土壤类型zinnharvey—正态低/高值连通连通性控制模拟normal_to_arcsinarcsin双峰双峰分布物理量另有boxcox、normal_to_uniform、normal_to_uquad、apply_function套用任意自定义函数可用完整文档见 examples/07_transformations/README.rst。实用小贴士 ✅两种等价写法srf.transform(lognormal)与gs.transform.normal_to_lognormal(srf)效果相同前者更简洁变换要求标准正态场若场定义了 normalizer 或趋势trend需设置processTrue做前后处理命名存储不丢原场storef1会保留原field可用srf.plot(f1)随时切换对比保持统计特征discrete、arcsin、binary等变换默认保持原场均值/方差结果可直接用于下游克里金分析掌握这 5 种场变换你已能覆盖绝大多数空间随机场建模需求——下一步不妨试试 examples/05_kriging/ 中的克里金插值或 examples/10_normalizer/ 中的数据标准化把 GSTools 的完整工作流连起来 【免费下载链接】GSToolsGSTools - A geostatistical toolbox: random fields, variogram estimation, covariance models, kriging and much more项目地址: https://gitcode.com/gh_mirrors/gs/GSTools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考