首页 > 解决方案 > 找到特定 x 值的梯度

问题描述

我在 numpy 数组中有一组数据 - x 值,可以说在 0-100 和 y 值之间。我需要将梯度变为特定的 x 值 ex。x=20 但我只能得到 np.gradient 函数来给我某个索引值的梯度。现在我有:

g=np.gradient(y)
print(g[20])

但这当然给了我 i=20 而不是 x=20 的梯度

我的脚本中定义了一个 2D 数组和 2 个 1D 数组中的 x 和 y 值

编辑:我实际上是这样解决它的:

def grad(x, value):
    def find_nearest(x, value):
        x = np.asarray(Timeppmh)
        idx = (np.abs(x - value)).argmin()
        i = x.tolist().index(x[idx])
    return i
    g=np.gradient(yp,x)
    find_nearest(x,value)
return g[find_nearest(x,value)]

标签: pythonnumpygradient

解决方案


如果值 20 在x你可以做j[x == 20]。但是,如果不是这种情况,则需要近似梯度值。您可以使用例如线性插值。

import numpy as np

x = np.linspace(0, 100, 80)
print(20 in x)  # 20 is not in x
# False
y = x * x + 3 * x + 2
# Pass x as second argument for value spacing
g = np.gradient(y, x)
print(np.interp(20, x, g))  # Should be 43
# 43.00000000000001

推荐阅读