Python 如何在Numpy中计算曲线下的单独面积

Python 如何在Numpy中计算曲线下的单独面积,python,numpy,Python,Numpy,此曲线是从numpy数组绘制的 我计算曲线下的面积(在0和整个曲线之间) np.trapz(y) 如何分别计算两个区域中曲线下的面积: 如果为y1,则介于0和曲线之间 您只需将满足您条件的数组部分传递给trapz: np.trapz([i for i in y if i < 1]) 只需将满足条件的数组部分传递给trapz: np.trapz([i for i in y if i < 1]) 您可以预先选择要积分的范围,然后将x&y向量传递给np.trapz 例如: xs

此曲线是从numpy数组绘制的

我计算曲线下的面积(在0和整个曲线之间)

np.trapz(y)
如何分别计算两个区域中曲线下的面积:

  • 如果为y1,则介于0和曲线之间

您只需将满足您条件的数组部分传递给trapz:

np.trapz([i for i in y if i < 1])

只需将满足条件的数组部分传递给trapz:

np.trapz([i for i in y if i < 1])

您可以预先选择要积分的范围,然后将x&y向量传递给
np.trapz

例如:

xs = xs = np.arange(0, np.pi, np.pi/100000)
ys = np.sin(xs)

np.trapz(ys, xs)
# 1.9999999998355067 ~ 2

np.trapz(ys[xs<np.pi/2], xs[xs<np.pi/2])
# 0.999999999917753 ~ 1

cond = (xs>=np.pi/4) & (xs<3*np.pi/4)
np.trapz(ys[cond], xs[cond])
# 1.4141913474931518 ~ sqrt(2)

在0和曲线之间,如果y,则可以预先选择要积分的范围,然后将x&y向量传递到
np.trapz

例如:

xs = xs = np.arange(0, np.pi, np.pi/100000)
ys = np.sin(xs)

np.trapz(ys, xs)
# 1.9999999998355067 ~ 2

np.trapz(ys[xs<np.pi/2], xs[xs<np.pi/2])
# 0.999999999917753 ~ 1

cond = (xs>=np.pi/4) & (xs<3*np.pi/4)
np.trapz(ys[cond], xs[cond])
# 1.4141913474931518 ~ sqrt(2)

在0和曲线之间,如果yIf
y
是一个NumPy数组,则
[i为y,如果i<1]
最好写成
y[y<1]
。如果
y
是一个NumPy数组,则
[i为y,如果i<1]
最好写成
y[y<1]
np.trapz(ys[ys<1], xs[ys<1])
# 0.46380019145797086
i1 = np.trapz(ys[ys>1], xs[ys>1])
ys2 = np.ones(np.sum(ys>1))
i2 = np.trapz(ys2, xs[ys>1])
i1 - i2
# 0.10198754187656967
np.trapz(ys[ys>1]-1, xs[ys>1])
# 0.10198754187656967