SciPy是一种使用NumPy来做高等数学、信号处理、优化、统计和许多其它科学任务的语言扩展,SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。使用时要首先安装合适版本的scipy模块,win7_32位下载后一步步安装即可,直到安装完成。简单的例子:

from scipy import *
import numpy as np
from pylab import *
a = zeros(1000)
a[:10]=1
b=fft(a)
plot(abs(b))
show()

(1)最小二乘法拟合数据

scipy中的子函数库optimize已经提供了实现最小二乘拟合算法的函数leastsq。函数原型为:

leastsq(func, x0, args=(), Dfun=None, full_output=0, col_deriv=0, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=0.0, factor=100, diag=None, warning=True)

一般我们只要指定前三个参数就可以了。
func 是我们自己定义的一个计算误差的函数,
x0 是计算的初始参数值
args 是指定func的其他参数
下面用一个示例程序来解释他的用法,同样也是使用上面的求一次函数的拟合参数

# -*- coding: utf-8 -*-
import numpy as np
from scipy.optimize import leastsq
import pylab as pldef func(x,p):"""数据拟合所用的函数: A*sin(2*pi*k*x + theta)"""A, k, theta = preturn A*np.sin(2*np.pi*k*x+theta)   def errors(p,y,x):"""实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数"""return y-func(x,p)x = np.linspace(0,-2*np.pi,100)
A, k, theta = 10,0.34,np.pi/6 # 真实数据的函数参数
y0 = func(x,[A,k,theta]) # 真实数据
y1 = y0+2*np.random.randn(len(x)) # 加入噪声之后的实验数据    p0 = [7,0.2,0] # 设置第一次猜测的函数拟合参数#调用leastsq进行数据拟合,errors为计算误差的函数,p0为拟合参数的初始值
#args为需要拟合的实验数据
plsq =leastsq(errors, p0, args=(y1, x))print("real pares:", [A, k, theta])
print("fitting paras", plsq[0]) # 实验数据拟合后的参数pl.plot(x, y0, label="real data")
pl.plot(x, y1, label="noise data")
pl.plot(x, func(x,plsq[0]),label="fitting data")
pl.legend()
pl.show()

F5运行结果如下:

>>>
('real pares:', [10, 0.34, 0.5235987755982988])
('fitting paras', array([-10.51740809,   0.34191249,   3.66939538]))

注:由于正弦函数具有周期性,实际上拟合参数得到的函数和真实参数对应的函数基本是一致的。

(2)非线性方程组求解

optimize库中的fsolve函数可以用来对非线性方程组进行求解。它的基本调用形式如下:

fsolve(func, x0)

func(x)是计算方程组误差的函数,它的参数x是一个矢量,表示方程组的各个未知数的一组可能解,func返回将x代入方程组之后得到的误差;x0为未知数矢量的初始值。如果要对如下方程组进行求解的话:
f1(u1,u2,u3) = 0
f2(u1,u2,u3) = 0
f3(u1,u2,u3) = 0
那么func可以如下定义:

def func(x):u1,u2,u3 = xreturn [f1(u1,u2,u3), f2(u1,u2,u3), f3(u1,u2,u3)]

例如,求解如下方程组的解:
x1-2 = 0
x0*x0-*sin(x1*x2) = 0
x1*x2-2 = 0

from scipy.optimize import fsolve
from math import sin,cosdef f(x):x0 = float(x[0])x1 = float(x[1])x2 = float(x[2])return [x1-2,x0*x0-sin(x1*x2),x1*x2-2]result = fsolve(f, [1,1,1]) #设置初始值为[1 1 1]print (result)
print (f(result)) 

运行结果如下:

>>>
[ 0.95357088  2.          1.        ]
[0.0, -6.661338147750939e-16, -4.440892098500626e-16]

参考:

http://www.cnphp6.com/archives/65841

http://old.sebug.net/paper/books/scipydoc/scipy_intro.html

python数据分析之(5)scipy相关推荐

  1. Python数据分析很难学?60天就够了!

    广泛被应用的数据分析 谷歌的数据分析可以预测一个地区即将爆发的流感,从而进行针对性的预防:淘宝可以根据你浏览和消费的数据进行分析,为你精准推荐商品:口碑极好的网易云音乐,通过其相似性算法,为不同的人量 ...

  2. python数据分析流程

    一般可以安装"数据获取-->数据存储与提取-->数据预处理-->数据建模与分析-->数据可视化"这样的步骤来实施一个数据分析项目.该流程需要掌握的知识点如下 ...

  3. 《Python数据分析与挖掘实战》读书笔记

    大致扫了一遍,具体的代码基本都没看了,毕竟我还不懂python,并且在手机端的排版,这些代码没法看. 有收获,至少了解到以下几点: 一. Python的语法挺有意思的 有一些类似于JavaScript ...

  4. python数据分析的主要流程-KNIME + Python = 数据分析+报表全流程

    Python 数据分析环境 数据分析领域有很多可选方案,例如SPSS傻瓜式分析工具,SAS专业性商业分析工具,R和python这类需要代码编程类的工具.个人选择是python这类,包括pandas,n ...

  5. 从零开始学python数据分析-从零开始学Python数据分析与挖掘 PDF 扫描版

    给大家带来的一篇关于数据挖掘相关的电子书资源,介绍了关于Python.数据分析.数据挖掘方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小67.8 MB,刘顺祥编写,目前豆瓣.亚马逊.当当 ...

  6. 如何自学python数据分析-『』python数据分析该怎么入门呢?

    用python学数据分析难吗? 数据方向的薪资待遇还是比较高的,而且趋势也比较明显.随着据的落地应用,数据分析将有广泛的发展前景,未来广大的传统行业也将陆续释放出大量的数据分析岗位 通过Python来 ...

  7. python数据分析入门学习笔记儿

    转载: http://www.cnblogs.com/zzhzhao/p/5269217.html 学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主 ...

  8. python 数据分析班_Python数据分析班

    第一课 Python入门 知识点1:Python安装 知识点2:常用数据分析库NumPy.Scipy.Pandas.matplotlib安装 知识点3:常用高级数据分析库scikit-learn.NL ...

  9. python计算相关矩阵_Numpy使用大全(python矩阵相关运算大全)-Python数据分析基础2...

    //2019.07.10 python数据分析基础--numpy(数据结构基础) import numpy as np: 1.python数据分析主要的功能实现模块包含以下六个方面: (1)numpy ...

  10. 快速入门 Python 数据分析实用指南

    Python 现如今已成为数据分析和数据科学使用上的标准语言和标准平台之一.那么作为一个新手小白,该如何快速入门 Python 数据分析呢? 下面根据数据分析的一般工作流程,梳理了相关知识技能以及学习 ...

最新文章

  1. 概述:机器学习和大数据技术在信贷风控场景中的应用
  2. 在Django项目中使用富文本编辑器
  3. ospf避免环路_OSPF路由协议的区域防环机制
  4. ORACLE锁学习总结
  5. Python的字符串
  6. ITK:读取并打印DICOM标签
  7. vba移动文件_Excel VBA之FSO-2.3文件夹的移动
  8. 电子工程专业评副高总结_微电子科学与工程专业怎么样?
  9. 柳传志退休后拿近1亿薪酬?联想回应了:严重失实
  10. 火狐浏览器添加New Tab插件
  11. 【转】Asp.NET大文件上传组件开发总结(二)---提取文件内容
  12. 允许用户把若干个作业提交给计算机,允许多个用户将若干个作业提交给计算机系统集中处理的操作系统称为( )。...
  13. dcs常用的冗余方式_冗余技术在DCS平台应用分析
  14. 站内SEO第三篇:降低网站跳出率的7种有效方法
  15. 太过伤心,小王被这 10 道 Java 面试题虐哭了
  16. php phpunit_framework_testcase,开始使用PHPUnit
  17. # USACO@2020铜级赛第二题
  18. android图片凹凸效果,图像滤镜处理算法:柔化、光照、放大镜、哈哈镜
  19. CSS3中惊艳的gradient
  20. ATA并口硬盘接口图解

热门文章

  1. [UE4] 虚幻4学习---UE4中的字符串转换
  2. iOS 性能优化:Instruments 工具的救命三招
  3. javascript循环事件只响应最后一次的问题处理
  4. 浏览器tab切换最小化,当前页面无操作刷新页面
  5. MySQL中使用SQL语句对字段进行重命名
  6. Windows中MySQL主从数据库搭建(二)
  7. Jquery—Jquery异步功能实例
  8. oracle 聚合函数 LISTAGG ,将多行结果合并成一行
  9. 在线查找和下载jar包的好工具maven repository
  10. Cesium Terrain Builder 非压缩瓦片