Python中的循环计算

时间:2018-01-19 17:55:21

标签: python arrays loops

我试图按照我的领导者的要求从头开始构建熵函数。我有一个数据集Ttrain,有很多变量,性别是一个。我必须提取类别(男性和女性),然后使用以下代码在 循环 中随后计算概率和熵:

def entropy3(c):
    import math
    u=c.unique()
    a=[]
    b=[]
    z=[]
    for i in range(len(u)):
        a=Ttrain[(c==u[i]) & (Ttrain.survived==1)].survived.count()
        b=Ttrain[(c==u[i]) & (Ttrain.survived==0)].survived.count()
        p=a/(a+b)
        q=b/(a+b)
        z=-(p)*math.log(p,2)-(q)*math.log(q,2)
        return z

现在,当我运行print(entropy3(Ttrain.sex))时,我得到0.85,这是女性类别的熵。这意味着循环不会迭代到其他类别。如果有人能指出我哪里出错了,将不胜感激。我对编程非常陌生,所以请原谅任何概念上的错误。

1 个答案:

答案 0 :(得分:0)

return语句(如果存在)是在函数中执行的最后一个语句。因此,只要它返回女性类别的值,控件就会退出该功能。由于您的return语句位于for循环中,因此下一个类别不会被处理。您可以在for循环外移动返回,并有一个列表来存储您想要返回的每个值。