【发布时间】:2021-04-05 18:16:48
【问题描述】:
我想计算点集中每个点(第一个和最后一个除外)的二阶导数。该点集具有字典数据类型,类似于points = {x1:y1, x2:y2, ... xn:yn},其中所有x 都是正整数,但间距不均匀,例如x1=1, x2=2, x3=3, x4=5, x5=7 x 数字不是线性增加的,并且差距可能是随机的,即x_{i+1} - x_{i} 可以是任何正整数。
对于这个点字典,我想得到每个点的二阶导数,所以我做了如下编码:
import numpy as np
from scipy.misc import derivative
def wrapper(x):
return np.array([points[int(i)] for i in x])
y_d2 = derivative(wrapper, np.array(list(points.keys()))[1:-1], dx=1.0, n=2)
在这种情况下,我会在return np.array([points[int(i)] for i in x]) 获得KeyError: 4。这是因为 x=4 在 points 字典中不存在,所以它有一个关键错误。我怎么能在这种情况下使用 scipy.misc.derivative ? scipy.misc.derivative的dx参数(间距)如何设置?
【问题讨论】:
标签: python pandas numpy scipy anaconda