使用numpy random.normalvariate()遇AttributeError错误的解决咨询
解决方法:AttributeError: module 'numpy.random' has no attribute 'normalvariate'
问题原因
normalvariate是Python标准库random模块的方法,并非numpy.random的API。你大概率是混淆了两个模块的用法,或是导入时错误将numpy.random别名为random,导致调用了不存在的方法。
两种可行修复方案
方案1:使用Python标准库random模块
确保导入的是标准库的random,而非numpy.random,代码如下:
import random import numpy as np probs = [np.clip(random.normalvariate(0.1, 0.05), 0, 1) for x in range(1000)]
方案2:使用Numpy的正态分布生成函数(更高效)
如果想用Numpy实现,应使用np.random.normal(注意是normal而非normalvariate),且Numpy支持直接生成数组,无需列表推导式,效率更高:
import numpy as np # 直接生成1000个符合要求的数值,再做截断 probs = np.clip(np.random.normal(0.1, 0.05, size=1000), 0, 1)
进阶推荐(Numpy新版本用法)
Numpy 1.17+推荐使用新的随机数生成器API,更稳定且线程安全:
import numpy as np rng = np.random.default_rng() probs = np.clip(rng.normal(0.1, 0.05, size=1000), 0, 1)
内容的提问来源于stack exchange,提问作者Khaled DELLAL
相关产品推荐
相关产品推荐

