**
二维表格线性插值
**
**
博客背景简述
**
在做项目时需要导入如上图CSV表格,利用线性插值进行查表,欲求出中间方框标志的那个数
代码部分
#导入所需的库
import numpy as np
import pandas as pd
def Look_Up(x_input, y_input):
#导入文件
df_table =pd.DataFrame(pd.read_csv("table.csv"))
print(df_table) #打印看看效果
x = np.array(df_table.iloc[0, :].dropna()) # 表的X坐标
y = np.array(df_table.iloc[:, 0]) # 表的Y坐标
z = np.array(df_table.iloc[:, :]) # y行x列
x_index = np.argwhere(x >= x_input) #判断输入的x在哪个位置
print("输入x 索引号介于" + str(int(x_index[0])) + "和" + str(int(x_index[0]) -1) + "之间")
y_index = np.argwhere(y >= y_input)#判断输入的x在哪个位置
print("输入y索引号介于" + str(int(y_index [0])) + "和" + str(int(y_index[0]) -1) + "之间")
#线性插值算出对应的值
Value_A = z[int(y_index[0])-1, int(x_index[0])-1] #左上角
Value_B = z[int(y_index[0])-1, int(x_index[0])] #右上角
Value_C = z[int(y_index[0]), int(x_index[0])-1] #左下角
Value_D = z[int(y_index[0]), int(x_index[0])] #右下角
Value_Up = Value_B-(x[int(x_index[0])]-x_input)/(x[int(x_index[0])]-x[int(x_index[0])-1])*(Value_B- Value_A) #待求数的上一个数
Value_Down = Value_D-(x[int(x_index[0])]-x_input)/(x[int(x_index[0])]-x[int(y_index[0])-1])*(Value_D- Value_C)#待求的下一个数
Value = Value_Down - (y[int(y_index[0])]- y_input)/(y[int(y_index[0])]-y[int(y_index[0])-1])*(Value_Down- Value_Up) #待求数
print("待求数是:")
print(Value)
Look_Up(x_input, y_input)
**
运行结果
**