繁体   English   中英

使用 isinstance 类型检查 scipy.stats 分布

[英]Type check scipy.stats distributions with isinstance

我在列表中有几个 scipy.stats 分布。 我想通过 isinstance 检查每个分布是否均匀、正常或其他分布。 但是,所有这些分布的类型似乎都是 scipy.stats._distn_infrastructure.rv_continuous_frozen。 如何将制服与正态分布分开?

下面是一个最小的例子。

import scipy.stats
dist_u = scipy.stats.uniform(loc = 0, scale = 2) #an example distribution
# isinstance(dist_u, scipy.stats.uniform) #this does not work
isinstance(dist_u, type(scipy.stats.uniform(0,1))) #This returns True
isinstance(dist_u, type(scipy.stats.norm(0,1))) #This also returns True, I expected it to return False
type(dist_u) # gives scipy.stats._distn_infrastructure.rv_continuous_frozen

我使用了 python 3.10 和 scipy 1.9.0。

回答我自己的问题以防其他人需要知道。

dists = [scipy.stats.uniform(loc=-2, scale = 2), scipy.stats.norm(0, 1)] #some example distributions
for dist in dists:
    if isinstance(dist.dist, type(scipy.stats.uniform)):
        print("unif")
    elif isinstance(dist.dist, type(scipy.stats.norm)):
        print("norm")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM