目前我有两个numpy数组:x
和y
,它们的大小相同。
我想编写一个函数(可能调用numpy/scipy...函数,如果它们存在):
def derivative(x, y, n = 1):
# something
return result
其中result
是一个与x
大小相同的numpy数组,包含y
关于x
的n
阶导数的值(我希望使用多个y
的值来计算导数,以避免非平滑结果)。
目前我有两个numpy数组:x
和y
,它们的大小相同。
我想编写一个函数(可能调用numpy/scipy...函数,如果它们存在):
def derivative(x, y, n = 1):
# something
return result
其中result
是一个与x
大小相同的numpy数组,包含y
关于x
的n
阶导数的值(我希望使用多个y
的值来计算导数,以避免非平滑结果)。
scipy.fftpack.diff
看起来非常有用。但是,如果我有一个在时间网格 tgrid
上给定为数组 ampl
的函数,我发现(通过试错)我必须执行 T = tgrid[-1] - tgrid[0]; deriv = scipy.fftpack.diff(ampl) * (2.0*pi / T)
。我想也许可以通过将正确的 period
传递给 diff
函数来实现相同的效果,但我无法找到正确的值。是否有这种用例的示例? - Michael Goerzfindiff 项目是一个Python包,可以对任意维度的数组进行任意精度阶数的导数运算(当然取决于您的硬件限制)。它可以处理均匀和非均匀网格上的数组,并创建导数的广义形式,即具有常数和变量系数的部分导数的一般线性组合。
类似这样的东西能解决你的问题吗?
def get_inflection_points(arr, n=1):
"""
returns inflextion points from array
arr: array
n: n-th discrete difference
"""
inflections = []
dx = 0
for i, x in enumerate(np.diff(arr, n)):
if x >= dx and i > 0:
inflections.append(i*n)
dx = x
return inflections