找到特定x值的梯度

问题描述 投票:0回答:1

我有一组numpy数组中的数据 - x值,比如0-100和y值。我需要将渐变到特定的x值ex。 x = 20但是我只能得到np.gradient函数来给我一个索引值的渐变。现在我有:

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

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

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

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

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)]
python numpy gradient
1个回答
1
投票

如果值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
© www.soinside.com 2019 - 2024. All rights reserved.