gpt4 book ai didi

python 绘图 RecursionError : maximum recursion depth exceeded in comparison

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:43 24 4
gpt4 key购买 nike

我尝试运行下面的代码

import math
import random
from matplotlib import pyplot as plt
from collections import Counter

def bucketize(point,bucket_size):
return bucket_size * math.floor(point/bucket_size)

def make_histogram(points, bucket_size):
return Counter(bucketize(point,bucket_size) for point in points)

def plot_histogram(points,bucket_size,title=""):
histogram = make_histogram(points,bucket_size)
plt.bar(histogram.keys(),histogram.values(),width=bucket_size)
plt.title(title)
plt.show()

def inverse_normalCDF(p,miu=0,sigma=1,tolerance=0.00001):
if miu !=0 or sigma !=1:
return miu + sigma * inverse_normalCDF(p,tolerance=tolerance)
low_z,low_p = -10.0,0
hi_z,hi_p = 10.0,1
while hi_z - low_z > tolerance:
mid_z = (low_z + hi_z)/2
mid_p = normalCDF(mid_z)
if mid_p > p:
low_z,low_p = mid_z,mid_p
elif mid_p > p:
hi_z, hi_p = mid_z,mid_p
else:
break
return mid_z

def normalCDF(x,miu=0,sigma=1):
return (1+math.erf((x-miu)/math.sqrt(2)/sigma))/2


random.seed(0)
#uniform = [200*random.random()-100 for _ in range (10000)]
#plot_histogram(uniform,10,"uniform histogram")
normal = [57 * inverse_normalCDF(random.random() for _ in range(10000))]
plot_histogram(normal,10,"normal histogram")

但程序显示错误“RecursionError:比较时超出最大递归深度”,我应该如何修复 RecursionError,因为它会影响 inverse_normalCDF 函数?

错误不再显示函数中超出的最大递归深度,而是

Traceback (most recent call last):
File "C:\Users\asus\Documents\Sublime\dataScience\normalHistogram.py", line 41, in <module>
normal = [57 * inverse_normalCDF(random.random() for _ in range(10000))]
File "C:\Users\asus\Documents\Sublime\dataScience\normalHistogram.py", line 26, in inverse_normalCDF
if mid_p > p:
TypeError: '>' not supported between instances of 'float' and 'generator'
[Finished in 0.7s]

我使用的python版本是3.7,我使用的matplotlib版本是3.0.3

*更新,改变了

def inverse_normalCDF(p,miu=0,sigma=1,tolerance=0.00001):fix some typos in the code

最佳答案

你快到了。该错误可以通过重写您的列表理解来解决:

normal = [57 * inverse_normalCDF(random.random()) for _ in range(10000)]

我只是移动了一个右括号,以便函数 inverse_normalCDF 为每次迭代传递一个值,而不是整个生成器。

关于python 绘图 RecursionError : maximum recursion depth exceeded in comparison,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55876542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com