Scipy還是需要較強的數學基礎。需要學習。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate
def main():
x = np.linspace(0, 1, 10) #插值算法#插值:通過已知的離散數據來求解未知數據的方法,要求曲線通過所有的已知數據。
#擬合:要求曲線函數與已知數據集的誤差最小,不要求曲線通過所有的已知數據。#
y = np.sin(2 * np.pi * x)
li = interpolate.interp1d(x,y,kind="cubic")#三階B樣條曲線#
#interpld可以計算x的取值範圍之內任意點的函數值,並返回新的數組。#
#參數x和y是一系列已知的數據點#
#參數kind是插值類型,可以是字符串或整數#
x_new = np.linspace(0,1,50)
y_new =li(x_new)#給出x、y取值範圍#
plt.figure()
plt.plot(x,y,"r")#紅色表示原來數據#
plt.plot(x_new,y_new,"b")#藍色表示新數據#
plt.show()
print (y_new)
if __name__ == "__main__":
main()