gpt4 book ai didi

python - 卡方计算返回全零

转载 作者:行者123 更新时间:2023-11-30 23:02:50 25 4
gpt4 key购买 nike

编辑:经过更多的尝试和错误,我发现由于某种原因,python 说 1/52 是 0,谁能解释一下为什么,这样我将来就可以避免这个问题?

我已经在脚本上苦苦挣扎了一段时间,主要是因为我或我的同学根本无法找出它的问题所在。

为了让事情变得简单,我们已经有了数据和模型,我们必须将一些数据点重新调整为模型,然后进行卡方最小化,以便找到最佳的调整因子。

我已经尝试了多种方法。尝试将所有内容放入 1 个循环中,当这不起作用时,我尝试将循环拆分等。

我的代码的相关部分如下所示:

#Here I pick the values of the model that correspond to the data
y4 = np.zeros((len(l),1))
for x in range(0,len(l)):
if l[x] < 2.16:
for y in range(0,len(lmodel)):
if lmodel[y] == l[x]:
y4[x] = y2[y]
elif lmodel[y] < l[x] < lmodel[y+1]:
y4[x] = (y2[y] + y2[y+1])/2
else:
y4[x] = y1[x]


#Do Chi2 calculation
#First, I make a matrix with all the possible rescaled values
chi2 = np.zeros((200,1))
y3 = np.zeros((len(l),len(chi2)))
for z in range(0,len(chi2)):
for x in range(0,len(l)):
if l[x] < 2.16:
y3[x,z] = y1[x]*10**(0.4*Al[x]*z/100)
else:
y3[x,z] = y1[x]

#Here I calculate the chisquare for each individual column and put it in the chi2 array
dummy = np.zeros((len(l),1))
for x in range(0,len(chi2)):
for t in range(0, len(l)):
dummy[t] = (1/52)*((y3[t,x] - y4[t])/fle[t])**2
chi2[x] = np.sum(dummy)

问题是,无论我尝试什么,由于某种原因,我的虚拟数组总是全零,使得每个卡方值都为 0。

我尝试将“dummy”设为矩阵并进行求和,我尝试打印各个值来计算 dummy[t],其中一些为 0(如预期),一些则为 0 t,所以从逻辑上讲,如果各个值不全为 0,则 dummy 中的每个值也不应该都是 0。

我只是找不到哪里出错了,以及为什么我不断得到零数组。

最佳答案

在 Python 2(大多数人仍在使用)中,1/52 是整数除法,因此返回 0。您可以通过显式使用 float 来修复它,例如1.0/52

在 Python 3 中,这不再是事实——两个整数相除可以返回 float 。

关于python - 卡方计算返回全零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310396/

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