我有以下设置:
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_age
和interpolated_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/