繁体   English   中英

如何从 Dataframe 中获取线性值

[英]How to get linear value from Dataframe

我有一个简单的问题。

我想用 dataframe 获得线性值。(如 Matlab simulink 中的 ND Lookuptable)

type python
import numpy as np
import scipy as sp
import pandas as pd

X = np.array([100,200,300,400,500])
Y = np.array([1,2,3])
W = np.array([[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3]])

df = pd.DataFrame(W,index=Y,columns=X)
#   100  200  300  400  500
#1    1    1    1    1    1
#2    2    2    2    2    2
#3    3    3    3    3    3

#want function.
#Ex
#input x = 150 y= 1 
#result = 1

#input x = 100 y = 1.5
#result = 1.5

有人让我知道,如果有 function 或库,或者我该怎么做,或者一些更好的方法。

如果可能的话,我只想使用 Numpy、Pandas 或 Scipy 使用一些数组数据制作过滤器或获取 function。

您正在寻找scipy.interpolate.RectBivariateSpline

#lib
import numpy as np
from scipy import interpolate

#input
X = np.array([100,200,300,400,500])
Y = np.array([1,2,3])
W = np.array([[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3]])

#solution
spline = interpolate.RectBivariateSpline(X, Y, W.T, kx=1, ky=1)

#example
spline(150, 1) #returns 1
spline(100, 1.5) #returns 1.5

让我知道它是否解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM