线性插值对二维CSV表格进行查表

数据

**

二维表格线性插值

**

**

博客背景简述

**
在做项目时需要导入如上图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)

**

运行结果

**
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值