不支持的操作数类型Python功能和列表

时间:2017-11-13 08:24:41

标签: python arrays

其中一个教程问题让我们专注于创建一个返回简单表达式的函数。表达式如下:

EQ = cos *(pi / 2)* x ^ 2 + sin(pi / 4)* x + x ^ 3 其中x是一个浮点数组。

我写了以下代码来回答这个问题:

def  getStats(x):
    # Complete the function.    
    y = float(numpy.cos((numpy.pi/2)*x**2) + numpy.sin((numpy.pi/4)*x) + x**3) 
return y

但是我收到一条错误,指出pow或** list或int。

的操作数类型不受支持

我试图输入这个,但它没有奏效。 除了类型铸造,我试图进一步打破这一点,但没有成功。关于我接下来可以尝试的任何想法?

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该评估输入列表的每个值的表达式。你可以使用list comprehension来做到这一点。

def  getStats(X):
    # Complete the function.
    y = [float(numpy.cos((numpy.pi/2)*x**2) + numpy.sin((numpy.pi/4)*x) + x**3) for x in X]
    return y

首选编辑部分中的方法(见下文)。

编辑:将输入列表转换为numpy数组并进行计算。

def  getStats(x):
    # Complete the function.
    x = numpy.array(x)
    y = numpy.cos((numpy.pi/2) * numpy.power(x, 2)) + numpy.sin((numpy.pi/4)*x) + numpy.power(x, 3)
    return y # if you want to return a list, use list(y)