Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从txt插入表格_Python_Interpolation - Fatal编程技术网

Python 从txt插入表格

Python 从txt插入表格,python,interpolation,Python,Interpolation,我对python编程相当陌生,我正在尝试编写一个程序,从txt文件绘制一个图形,并在以后插入数据 为了获得数据,我知道我可以使用: precos=np.genfromtxt('precos.txt',分隔符=',')) 或 数据很简单,比如: 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

我对python编程相当陌生,我正在尝试编写一个程序,从txt文件绘制一个图形,并在以后插入数据

为了获得数据,我知道我可以使用:

precos=np.genfromtxt('precos.txt',分隔符=','))

数据很简单,比如:

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
可以帮上忙,但我还是无法理解它

----编辑----

好的,我尝试了一种新的方法,现在我的代码几乎完成了,但我仍然得到一个错误

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\u new中的值低于插值范围。


有什么想法吗?

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]

您首先需要决定要使用哪种插值:线性插值、多项式插值、有理插值还是其他插值?线性,它使用两个连续点之间的线段,很简单,不需要任何额外的模块就可以自己做,但是其他的更难。我对线性和多项式感兴趣。有没有办法不使用中间点?除sp.interpolate.interp1d之外的其他线。我需要图形插值在定义的输入点之间画直线是在定义的输入数据之间的中间点的线性插值。这种线性插值是plt.plot中唯一内置的一种插值。如果你想要一条平滑的曲线,你应该自己在密集的中间点上插值,在插值函数中使用类似于
kind='cubic'
的东西。这就是你想要的吗?事实上,我的老师让我这样做:编写一个代码,读取一个.txt文件,这是一个表格,上面有一些产品的价格/天。在绘制完图形后,它必须对数据进行插值…它缺少一些信息,所以我有点迷路了。
[ 69.    69.    69.    56.51]