导读: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([[0123456789]])
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


deff(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在量化投资分析中具体的应用案例。
划重点👇
在公众号对话框输入以下关键词
查看更多优质内容!
PPT | 读书 | 书单 | 硬核 | 干货|讲明白|神操作
大数据 | 云计算 | 数据库 | Python | 可视化
AI | 人工智能 | 机器学习 | 深度学习 | NLP
5G|中台 | 用户画像1024 | 数学 | 算法 数字孪生
据统计,99%的大咖都关注了这个公众号
👇
继续阅读
阅读原文