尝试比较数字时出现奇怪的错误

时间:2016-05-21 19:21:52

标签: python numpy

考虑下一段代码 -

def findBestHypothesis():

    bestOfBest = []
    currentERMValue = 0
    bestERMValue = 0

    for polynom in bestOfHypothesisClasses:
        for j in range(0, len(training_set)):
            currentERMValue += (np.polyval(polynom, training_set[x_value_index]) -
                                training_set[y_value_index])**2

        if currentERMValue >= bestERMValue:
            bestERMValue = currentERMValue
            currentERMValue = 0
            bestOfBest = polynom

    return bestOfBest

如您所见,currentERMValue和bestERMValue是数字而不是数组。但是我得到了这个 -

  

如果np.greater_equal(currentERMValue,bestERMValue):ValueError:The   具有多个元素的数组的真值是不明确的。使用   a.any()或a.all()

2 个答案:

答案 0 :(得分:2)

数组上的

polyval返回一个数组,每个x值有一个元素:

>>> np.polyval([1,2,3],[4,5,6])
array([27, 38, 51])

所以training_set是二维数组,或者x_value_index或y_value_index不是标量。

答案 1 :(得分:-1)

我不确定,但是np.polyval会返回几个值。

返回:
值:ndarray或poly1d
如果x是poly1d实例,则结果是两个多项式的组合,即x在p中被“替换”并且返回简化结果。另外,x - array_like或poly1d的类型 - 控制输出的类型:x array_like => values array_like,x a poly1d object =>价值也是。
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.polyval.html