【问题标题】:Unsupported Operand Types Python Power and Lists不支持的操作数类型 Python 电源和列表
【发布时间】:2017-11-13 08:24:41
【问题描述】:

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

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 的操作数类型不受支持。

我尝试输入 cast this 但没有成功。 除了类型转换之外,我还尝试进一步分解它,但没有成功。关于下一步我可以尝试什么的任何想法?

谢谢。

【问题讨论】:

  • 你传递给函数的是什么?并且请避免发布图片。而是粘贴文本。
  • 我正在传递一个[1.0,2.0,3.0]形式的数组
  • 您希望[1.0,2.0,3.0]**2 (x**2) 的结果是什么?你不能将list 提升为权力。
  • 尝试使用 numpy.power() 函数而不是 **。另外,将列表转换为数组,此时它是一个列表。
  • 我试过这样做:y = numpy.power((numpy.cos((numpy.pi/2)*x),2)) + (numpy.sin((numpy.pi/ 4)*x)) + (numpy.power(x,3))

标签: python arrays


【解决方案1】:

您应该为输入列表的每个值计算表达式。您可以使用列表推导来做到这一点。

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)

【讨论】:

  • 鉴于我们无论如何都处于 numpy 领域,在计算 y 而不是通过列表理解之前只使用 x = np.array(X) 是否有意义?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
  • 2020-12-04
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
相关资源
最近更新 更多