金融量化 - numpy 教程


咱们须要了解一下 numpy 的应用场景
web


NumPy提供了大量的数值编程工具,能够方便地处理向量、矩阵等运算,极大地便利了人们在科学计算方面的工做。另外一方面,Python是免费,相比于花费高额的费用使用Matlab,NumPy的出现使Python获得了更多人的青睐
编程


查看 numpy 版本
数组


import numpy
numpy.version.full_version


数组
微信


NumPy中的基本对象是同类型的多维数组(homogeneous multidimensional array),这和C++中的数组是一致的,例如字符型和数值型就不可共存于同一个数组中。先上例子dom


a = numpy.arange(20)


经过函数reshape,咱们能够从新构造一下这个数组,例如,咱们能够构造一个4*5的二维数组,其中reshape的参数表示各维度的大小,且按各维顺序排列(两维时就是按行排列,这和R中按列是不一样的):
ide


a = a.reshape(4,5)


构造更高维的也没问题:函数


a = a.reshape(2,2,5)


既然aarray,咱们还能够调用array的函数进一步查看a的相关属性:ndim查看维度;shape查看各维度的大小;size查看所有的元素个数,等于各维度大小的乘积;dtype可查看元素类型;dsize查看元素占位(bytes)大小工具



建立数组
spa


数组的建立可经过转换列表实现,高维数组可经过转换嵌套列表实现:.net


raw = [0,1,2,3,4]
a = numpy.array(raw)


raw = [[0,1,2,3,4], [5,6,7,8,9]]
b = numpy.array(raw)


一些特殊的数组有特别定制的命令生成,如4*5的全零矩阵:


d = (4, 5)
numpy.zeros(d)


默认生成的类型是浮点型,能够经过指定类型改成整型:


d = (4, 5)
numpy.ones(d, dtype=int)



[0, 1)区间的随机数数组:


numpy.random.rand(5)


数组操做


简单的四则运算已经重载过了,所有的+-*/运算都是基于所有的数组元素的,以加法为例:



相似C++,+=-=*=/=操做符在NumPy中一样支持:



开根号求指数也很容易:



须要知道二维数组的最大最小值怎么办?想计算所有元素的和、按行求和、按列求和怎么办?for循环吗?不,NumPy的ndarray类已经作好函数了:



数组元素访问


数组和矩阵元素的访问可经过下标进行,如下均以二维数组(或矩阵)为例:



能够经过下标访问来修改数组元素的值:



如今问题来了,明明改的是a[0][1],怎么连b[0][1]也跟着变了?这个陷阱在Python编程中很容易碰上,其缘由在于Python不是真正将a复制一份给b,而是将b指到了a对应数据的内存地址上。想要真正的复制一份ab,能够使用copy



若对a从新赋值,即将a指到其余地址上,b仍在原来的地址上:



利用:能够访问到某一维的所有数据,例如取矩阵中的指定列:



数组操做


仍是拿矩阵(或二维数组)做为例子,首先来看矩阵转置:



矩阵求逆:



求特征值和特征向量



按列拼接两个向量成一个矩阵:



在循环处理某些数据获得结果后,将结果拼接成一个矩阵是十分有用的,能够经过vstackhstack完成:



缺失值


缺失值在分析中也是信息的一种,NumPy提供nan做为缺失值的记录,经过isnan断定。



nan_to_num可用来将nan替换成0,在后面会介绍到的更高级的模块pandas时,咱们将看到pandas提供能指定nan替换值的函数。



NumPy还有不少的函数,想详细了解可参考连接 http://wiki.scipy.org/Numpy_Example_List 和 http://docs.scipy.org/doc/numpy

最后献上NumPy SciPy Pandas Cheat Sheet



本文分享自微信公众号 - 人生代码(lijinwen1996329ken)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索