我有以下设置:

a.T = [[0.  0.4 0.8 1.2 1.6 1.  1.2 1.4 1.6 1.8 0.5 0.9 1.3 1.7 2.1 2. ]]
b.T = [[0.  0.4 0.8 1.2 1.6 2.  2.2 2.4 2.6 2.8 3.  3.4 3.8 4.2 4.6 5. ]]


b视为时间值,并且函数在这些瞬间所取的值由a给出。

现在,当我执行np.trapz(interpolated_age,interpolated_time)时,我得到的积分运算结果是多个0值数组。但是,如果我对transpose方法的参数(即trapz)进行np.trapz(interpolated_age.T,interpolated_time.T)操作,我将获得正确的答案作为单个值。

有人可以指出背后的原因是什么?我认为对于trapz操作,我们只需要2个相同大小的数组即可进行2D集成。

最佳答案

您的数组interpolated_ageinterpolated_time的形状为(n,1)。 trapz有一个axis参数,默认值为-1(最后一轴)。这意味着您计算的是单点(cc)下面积的n倍,因此得到n个零的数组。

如果需要将数组设为2D,则指定0以在第一个轴(n个点)上积分以获得正确的结果。

area_under_curve = np.trapz(interpolated_age, interpolated_time, axis=0)


或者,您可以检查是否可以使用简单的一维数组(无法从程序代码中分辨出来)。

关于python - 为什么numpy.trapz()返回零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58241027/

10-09 20:14