3段极简代码带你入门Python科学计算库SciPy

导读:SciPy是基于NumPy的,提供了更多的科学计算功能,比如线性代数、优化、积分、插值、信号处理等。

作者:赵志强 刘志伟

来源:大数据DT(ID:hzdashuju)

01 文件读写

目前在国内Matlab仍然非常流行,Matlab使用的数据格式通常是.mat文件。对此,Scipy.io包提供了可以导入导出.mat文件的接口,这样,Python和Matlab的协同工作就变得非常容易了。示例代码如下所示:

from scipy import io as spio
import numpy as np
a=np.arange(10)
spio.savemat('a.mat',{'a':a})
data = spio.loadmat('a.mat', struct_as_record=True)
data['a']

Out:

array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

02 线性代数运算

在SciPy中,线性代数运算使用的是scipy.linalg。

scipy.linalg.det()可用于计算矩阵的行列式,示例代码如下:

from scipy import linalg
m=np.array([[1,2],[3,4]])
linalg.det(m)

Out:

-2.0

03 优化和拟合

求解最大值最小值之类的问题即为优化问题,在SciPy中,scipy.optimization提供了最小值、曲线拟合等算法。示例代码如下:

import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt

def f(x):
    return x**2+20*np.sin(x)

x=np.arange(-10,10,0.1)

plt.plot(x,f(x))

由图3-1中可以看到,对应的最小值的横坐标大约是-2。

我们可以用暴力穷举法来计算最小值,代码如下:

grid=(-10,10,0.1)
x_min=optimize.brute(f,(grid,))
x_min
Out:
array([-1.42754883])

▲图3-1

当然,当数据量较大的时候,穷举法速度会很慢。为了提高效率,scipy.optimize也提供了诸如模拟退火等优化算法,这里不再多讲。

关于作者:赵志强,金融量化与建模专家,目前在金融科技公司负责金融大数据产品工作,专注于研究Al在金融领域的落地应用。曾在由诺奖得主Robert Engle领导的上海纽约大学波动研究所研究全球金融风险,并和上交所、中金所合作完成多项科研项目。曾在摩根士丹利华鑫基金、明汯投资负责量化投资研究工作,内容包括股票多因子、期货CTA和高频交易等。

刘志伟,在中国银联云闪付事业部从事数据分析、数据挖掘等工作。对自然语言处理、文本分类、实体识别、关系抽取、传统机器学习,以及大数据技术栈均有实践经验。目前正在探索相关技术在金融场景内的落地应用,包括自动知识图谱、大规模文本信息抽取结构化、异常识别等领域,关注人工智能行业前沿技术发展。

本文摘编自《Python量化投资:技术、模型与策略》,经出版方授权发布。

延伸阅读《Python量化投资:技术、模型与策略》

点击上图了解及购买

转载请联系微信:DoctorData

推荐语:理论与实践相结合,基于Python阐述量化投资理论和策略,深入分析Python在量化投资分析中具体的应用案例。


扫码关注【图书小编辑】视频号

每天来听华章哥讲书

更多精彩回顾

书讯 | 3月书讯 | 此时已莺飞草长,爱的书正在路上...

资讯 | RedMonk 编程语言排行榜:JS持续霸榜,Dart 快速上升!

书单 | 金三银四求职季,程序员面试必备——操作系统篇

干货 | 智能生产之路(一):从计算机集成制造到精益生产再到工业 4.0

收藏 | 重磅 | 银行数字化转型调研报告

赠书 | 【第47期】10本好书,助企业赢在数字化转型起跑线

点击阅读全文购买

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值