从txt插值表

时间:2017-02-20 00:02:57

标签: python interpolation

我对python编程很新,我试图编写一个程序,从txt文件中绘制图形并稍后插入数据。

要获取数据,我知道我可以使用:

precos = np.genfromtxt('Precos.txt', delimiter=',')

precos = sp.loadtxt("Precos.txt", delimiter=",")

数据很简单:

1,  69.00

2,  69.00

3,  69.00

4,  69.00

5,  69.00

6,  69.00

7,  69.00

8,  79.00

9,  56.51

10, 56.51

我也知道我可以使用

plt.plot(precos)

绘制图表,但我不知道如何插图。我看到sp.interpolate.interp1d可以提供帮助,但我仍然无法理解它。

---- ---- EDIT

好的,我尝试了一种新方法,现在我的代码差不多完成了,但我仍然遇到一个错误。

import scipy as sp
import numpy as np
import matplotlib.pyplot as plt

## Importando os dados numa matriz Nx2

M = sp.loadtxt('Precos.txt', delimiter=',')

## Construindo os vetores X e Y

x=np.zeros(len(M))
y=np.zeros(len(M))
for i in range(len(M)):
    x[i] = M[i][0]
    y[i] = M[i][1]

##Grahp Plot

plt.plot(x,y)
plt.title("Fone de Ouvido JBL com Microfone T100A - Fevereiro 2017")
plt.xlabel("Dia")
plt.ylabel("Preco em R$")

##Interpolation

F = sp.interpolate.interp1d(x,y)
xn = sp.arange(0,9,0.1)
yn = F(xn)
plt.plot(x, y, 'o', xn, yn, '-')
plt.show()

但现在我得到了: ValueError:x_new中的值低于插值范围。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

sp.interpolate.interp1d生成一个函数,您可以重复使用该函数在中间点插入原始数据。这里有一些特定的代码可以为它注入一些生命:

import numpy as np
from scipy import interpolate

data = np.array([[1,  69.00],
[2,  69.00],
[3,  69.00],
[4,  69.00],
[5,  69.00],
[6,  69.00],
[7,  69.00],
[8,  79.00],
[9,  56.51],
[10, 56.51]])

x = data[:,0]
y = data[:,1]

# Define an interpolation function
interpolation_function = interpolate.interp1d(x,y,kind='linear')

# Define intermediate points to interpolate at, and print the result
xi = [1, 1.5, 2.5, 9.5]
print(interpolation_function(xi))

给出了结果:

[ 69.    69.    69.    56.51]