Yves还是Derivatives Analytics with Python(Wiley Finance,2015)的作者。作为获得数理金融学博士学位的商业管理专业研究生,他在萨尔州大学讲授计算金融学中的数值化方法课程。
原文摘录
· · · · · ·
NumPy提供了常规数组(至少缺乏dtype限制)的广义形式,但是我们暂时坚持使用常规数组,以观察这种专门化措施对性能的影响。
做个简单的练习,假定我们要生成一个5000 x 5000个元素组成的矩阵/数组,填入标准正态分布(伪)随机数,然后计算所有元素的总和。首先采用纯Python方法,大量使用列表推导和函数式编程方法以及lambda函数:
In [111]: import random
I = 5000
In [112]: %time mat = [[random.gauss(0,1) for j in range(l)] for i in range(l)] » a nested list comprehension
0ut[112]: CPU times: user 36.5 s, sys: 408 ms, total: 36.9 s Wall time: 36.4 s
In [113]: %time reduce(lambda x, y: x + y, reduce(lambda x, y: x + y, row for row in mat])
0ut[113]: CPU times: user 4.3 s, sys: 52ms, total: 4.35s
678.5908519876647
现在转向NumPy,看看同一个问题如何解决。为方便起见,NumPy子库random提供了多种函数,以初始化numpy.ndarray对象,同时填入(伪)随机数:
In [114]: %time mat = np.random.standard_normal((I, I))
0ut[114]: CPU times: user 1.83 s, sys: 40 ms, total: 1.87 s Wall time: 1.87 s in [115]:... (查看原文)
3 有用 阿道克 2019-02-15 17:05:27
很良心的第2版,增加了三分之一的篇幅,新的内容主要是算法交易和机器学习
0 有用 坎顾 2022-01-08 09:25:34
尝尝鲜 理论知识少,前沿技术少,十分侧重实战 OOP 的演示真不错