NumPy安装
可以安装anaconda,该工具中包含了量化交易所需的各种库。当然包含numpy。
NumPy的数组
如下样例a作为单价,b作为件数,得出购物车中总商品价格。
import numpy as np
import random
a = [random.uniform(100.0, 200.0) for i in range(50)]
b = [random.randint(10, 50) for i in range(50)]
a = np.array(a)
b = np.array(b)
print(a)
print(b)
print(a*b)
print((a*b).sum())
如下样例新建了一个三维数组。然后进行了转置。
a = np.array([[[1,2,3],[4,5,6]], [[2,3,4],[6,7,8]]])
print(a)
print(a.T)
print(a.ndim)
数组简单运算操作。
a = np.arange(10)
print(a)
print(a+1)
print(a*3)
b = np.arange(10, 20)
print(b)
print(a+b)
print(a<b)
NumPy的数组索引
数组的索引相关操作。数组的切片是引用,修改会连带修改原数据。
c = np.arange(15)
print(c)
print(c[0:4])
d=c.reshape((3,5))
print(d[0],[1])
print(d[0,1])
print(d[0:2, 0:2])
filter相关以及布尔型索引。
c[c>5]涉及了2步运算,第一步,把数组和标量进行运算,生成布尔数组,第二步,把布尔数组作为索引,过滤出数据。
a = [random.randint(0, 10) for i in range(20)]
b = list(filter(lambda x:x>5, a))
print(a)
print(b)
c = np.array(a)
print(c)
print(c>5)
print(c[c>5])
print(c[(c>5) & (c%2==0)])
print(c[(c>5) | (c%2==0)])
数组的花式索引。
a = np.arange(20)
print(a[1,4,6,7])
b = np.arange(20).reshape(4,5)
print(b[0, b[0] > 2])
print(b[[1,3], :][:, [1,3]])
NumPy的函数
numpy中的常见函数见下。
abs为求绝对值,sqrt为开平方,ceil是向上取整,floor是向下取整,round是四舍五入,trunc是截断。
modf是把小数和整数部分进行隔离。
a = np.arange(-5, 5)
b = np.abs(a)
print(a)
print(b)
print(np.sqrt(b))
a = np.arange(-5.5, 5.5)
print(a)
print(np.ceil(a))
print(np.floor(a))
print(np.round(a))
print(np.trunc(a))
print(np.modf(a))
x,y = np.modf(a)
print(x)
print(y)
nan是not a number,不是任何浮点数。inf是infinity,比任何浮点数都大。
NumPy中常用np.nam和np.inf函数,nan常被用来数据缺失值。
a = np.arange(-5, 5)
print(a/a)
b=a/a
c=np.isnan(b)
print(b)
print(c)
a=np.array([2,3,4])
b = a/0
print(b)
c = np.isinf(b)
print(c)
maximum是求最大值,minimum是求最小值。
a=np.array([2,3,4,7])
b=np.array([3,2,5,5])
c=np.maximum(a,b)
d=np.minimum(a,b)
print(c)
print(d)
NumPy的统计方法
sum是求和,mean是求平均值。min是求最小值,std是求标准差,argmin求最小值索引,argmax求最大值索引,var求方差。
假设数组是[1,2,3,4,5],平均数为3,
方差=[(3-1)**2+ (3-2)**2+ (3-3)**2 +(3-4)**2 + (3-5)**2] /5
方差表示了数据的离散程度。
标准差为方差开根号,也可以表示数据的离散程度。
a=np.array([2,3,4,7])
b=np.array([3,2,5,5])
print(np.sum(a))
print(np.mean(a))
NumPy的随机数
print(random.random())
print(random.randint(0, 10))
print(random.choice([1,4,6]))
a=[1,2,5,7]
random.shuffle(a)
print(a)
print(np.random.randint(1,5))
print(np.random.randint(1,5,10))
print(np.random.randint(1,5,(3,5)))
print(np.random.randint(1,5,(3,5,4)))
print(np.random.rand(5))
print(np.random.choice([1,4,6],10))
print(np.random.uniform(2.0, 4.0))