如何使用Python包fastkde计算单变量样本指定点的密度?
单变量场景下fastkde的密度计算实现步骤
核心逻辑
fastkde的pdf函数原生支持单变量输入,执行后返回的对象包含密度估计结果与插值方法,可直接用来计算任意指定点的密度值。
具体实现步骤
执行单变量密度估计
直接将单变量样本z传入fastkde.pdf函数,无需额外多变量参数:# 执行单变量密度估计 pdf_obj = fastkde.pdf(z, var_names=['z'])返回的
pdf_obj封装了密度估计的核心数据与计算方法。提取密度插值函数
从返回对象中获取插值函数,用于快速计算任意点的密度:# 获取可直接调用的密度插值函数 density_func = pdf_obj.evaluate计算指定点的密度值
将列表w转换为numpy数组(适配函数输入要求),批量计算每个点的密度:# 转换为numpy数组以支持批量计算 w_arr = np.array(w) # 一次性得到所有点的密度值 densities = density_func(w_arr)
完整可运行代码
import numpy as np import fastkde N = int(1e5) z = 50*np.random.normal(size=N) + 0.1 w = list(range(10,0,-2)) # 1. 执行单变量密度估计 pdf_obj = fastkde.pdf(z, var_names=['z']) # 2. 获取密度插值函数 density_func = pdf_obj.evaluate # 3. 计算w中每个点的密度 w_arr = np.array(w) densities = density_func(w_arr) # 打印每个点对应的密度结果 for point, density in zip(w, densities): print(f"点 {point} 的密度值为: {density:.6f}")
补充说明
- 若需要可视化密度分布,直接调用
pdf_obj.plot()即可生成单变量密度曲线。 evaluate方法支持批量输入,无需循环逐个计算,效率更高。
内容的提问来源于stack exchange,提问作者Akira
相关产品推荐
相关产品推荐

