TypeError:使用 trapz 方法时,只能将 size-1 数组转换为 Python 标量
Posted
技术标签:
【中文标题】TypeError:使用 trapz 方法时,只能将 size-1 数组转换为 Python 标量【英文标题】:TypeError: only size-1 arrays can be converted to Python scalars when using trapz method 【发布时间】:2021-01-07 06:44:57 【问题描述】:这是我的python代码
import numpy as np
from scipy.integrate import quad, trapz, simps
import math
def f(x):
return math.exp(-(x**2/2))/math.sqrt(2*math.pi)
result, error = quad(f, 0, np.inf)
print(":f :g".format(result, error))
x = np.arange(0, 99999, 0.001)
fun = f(x)
res1 = trapz(fun, x)
print(res1)
我得到了这个错误:
... line 6, in f
return math.exp(-(x**2/2))/math.sqrt(2*math.pi)
TypeError: only size-1 arrays can be converted to Python scalars
为什么会这样? 使用 quad 方法的集成效果很好,但使用 trapz 方法效果不佳
【问题讨论】:
math
函数仅适用于标量值,不适用于数组。如果x
是一个数组,则使用np.exp(x)
。
【参考方案1】:
正如用户评论的那样,您只能使用具有标量值的数学函数,对于数组,您必须使用 NumPy 库中提供的数学函数。
【讨论】:
以上是关于TypeError:使用 trapz 方法时,只能将 size-1 数组转换为 Python 标量的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:在使用 Python 进行网络抓取时,只能将 str(而不是“列表”)连接到 str 错误
将当前url写入csv TypeError时:只能将列表(不是“元组”)连接到列表
将浮点数与数组中的值进行比较时,“TypeError:只能将整数标量数组转换为标量索引”
获取 TypeError:在 Apache Spark / Databricks 中尝试流数据时,路径只能是单个字符串
当 pandas 是导入时,Cx_freeze TypeError 只能连接列表(不是“NoneType”)以使用 numpy 依赖项列出