量化工具Numpy知识1:并行化思想与基础操作

Numpy是Python很多科学计算与工程库的基础库,在量化数据分析中最常使用的pandas也是基于Numpy的封装,可以说Numpy就是量化数据分析领域中的基础数组,学会Numpy是量化分析中关键的一步。

Numpy的输出是一个非常大且连续的并由同类型数据组成的内存区域,所以可以构造一个比普通列表大得多的数组,并且灵活高效地对数组中所有的元素进行并行化操作。

 一、并行化思想

示例1:构建10000个元素的普通列表循环求每个元素的平方,使用IPython Notebook的 %timeit 比较其与numpy.arrage()构建列表的运行效率。

代码块1:使用python自带的range()构建

normal_list = range(10000)
%timeit [i**2 for i in normal_list]

# 3.39 ms ± 73.1 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

代码块2:使用numpy.arange()构建

import numpy as np
np_list = np.arange(10000)
%timeit np_list**2

# 7.57 µs ± 42.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

比较结果:可以很直观地看出运行效率的提升,Numpy数组和普通列表的操作方式不同之处在于:Numpy通过广播机制作用于每一个内部元素,是一种并行化执行的思想,而普通list则作用于整体。

示例2:观察*3分别作用在普通列表与Numpy数组的区别。

代码块1:*3 操作被运作在Numpy数组的每一个元素上

np_list = np.ones(5) * 3
print(np_list)

# [3. 3. 3. 3. 3.]

代码块2:*3 操作认为是整体性操作

normal_list = [1, 1, 1, 1, 1] * 3
print(normal_list)

# [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

二、初始化操作

 常用的初始化np array的方式:

# 100个0
np.zeros(100)

# shape: 3行2列 全是0
np.zeros((3,2))

# shape: 3行2列 全是1
np.ones((3,2))

# shape: x=2, y=3, z=3 值随机
np.empty((2, 3, 3))

# 初始化序列与np_list一样的shape,值全是1
np.ones_like(np_list)

# 初始化序列与np_list一样的shape,值全是0
np.zeros_like(np_list)

# eye()得到对角线全是1的单位矩阵
np.eye(3)
print(np.eye(3))
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]

也可以将普通list作为参数,通过np.array来初始化np array:

data = [[1,2,3,4],[5,6,7,8]]
arr_np = np.array(data)
arr_np

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值