python中的代码语法与numpy

时间:2015-02-23 22:10:59

标签: python numpy

有人可以告诉我以下两种符号之间的区别,一种是工作,另一种不是,但它们对我来说似乎是一样的。

def GradientDescentCostTest():

    theta = numpy.array([0, 0, 0], numpy.float)
    features = numpy.array([[80, 20, 0], [65, 30, 1], [70, 23, 1]], numpy.float)
    values = numpy.array([20, 10, 14], numpy.float)    

    # This works and returns a value for cost:
    sumOfSquareErrors = numpy.square(numpy.dot(features, theta) - values).sum()
    cost = sumOfSquareErrors/(len(values)*2)

    # This doesn't work and returns value 0.0 for cost:
    cost = 1/(len(values)*2) * numpy.square(numpy.dot(features, theta) - values).sum()    

    return cost

print GradientDescentCostTest()

由于

1 个答案:

答案 0 :(得分:3)

1/(len(values)*2)等于0,因为所有操作都在整数上。一个简单的解决方法是使用1.0/(len(values)*2)