金融量化学习---Python, MySQL, Pandas

这里用来记录一些在金融领域,尤其是银行相关的资金、债券、票据中应用到的数据管理与分析, 编程等心得或笔记,以及个人的一点小小兴趣(易经八卦、藏密禅修)等

导航

Numpy 数值/数组计算

import numpy as np

数组 array的创建

功能 输入 输出
创建一维数组 np.array([1,2,3],dtype=float) array([1., 2., 3.])
创建二维数组 np.array([[1,2,3],[3,5,1]],dtype=float) array([[1., 2., 3.],[3., 5., 1.]])
步长为0.5的等差数列 np.arange(0,3,1) array([0, 1, 2])
总数为4个元素的等差数列 np.linspace(0,3,4) array([0., 1., 2., 3.])
生成3个0~1之间的随机数 np.random.random(3) array([0.12275179, 0.47087408, 0.60714583])
生成3个标准正态分布 np.random.randn(3) array([0.01709864, 0.67941382, 1.02026121])
均值为0,标准差为1的正态分布 np.random.normal(loc=0,scale=1,size=3) array([0.84679958, 0.67801806, 0.53508453])
连续复制数组元素1 np.repeat([1,2],2) array([1, 1, 2, 2])
连续复制数组元素1 np.tile([1,2],2) array([1, 2, 1, 2])
元素为1的数组 np.ones((2,3)) array([[1., 1., 1.],[1., 1., 1.]])
元素为0的数组 np.zeros((2,3)) array([[0., 0., 0.],[0., 0., 0.]])

数组的索引与变换

a = np.arange(6).reshape(3,2)
array([[0, 1],
       [2, 3],
       [4, 5]])

b = np.reshape(a,(2,3))
array([[0, 1, 2],
       [3, 4, 5]])

数组的排序

a = np.array([3,2,5,4])
np.argsort(a)      #返回array([1, 0, 3, 2], dtype=int64)

a[np.argsort(-a)]     
# a = np.array([3,2,5,4])  分别对应 0,1,2,3
# np.argsort(-a) = array([2, 3, 0, 1], dtype=int64)
# a[np.argsort(-a)] = array([5, 4, 3, 2])

np.sort(a)
a.sort()
#以上两句结果一样,array([2, 3, 4, 5])

#原始:
array([[1, 4, 3],
       [4, 5, 1],
       [2, 3, 2]])

b.sort(axis=0)      #0按列,1按行
#得到:
array([[1, 3, 1],
       [2, 4, 2],
       [4, 5, 3]])

b.sort(axis=1)      #0按列,1按行
#得到:
array([[1, 3, 4],
       [1, 4, 5],
       [2, 2, 3]])

数组的组合

#原始
a = np.arange(6).reshape(3,2)
array([[0, 1],
       [2, 3],
       [4, 5]])
b = np.arange(9).reshape(3,3)
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
c = np.arange(6).reshape(2,3)
array([[0, 1, 2],
       [3, 4, 5]])

#以下开始尝试不同的组合

#1 数组的水平组合(横着连接)
np.hstack((a,b))
np.concatenate((a,b),axis=1)
np.append(a,b,axis=1)
#以上三句等效,结果都是下面:
array([[0, 1, 0, 1, 2],
       [2, 3, 3, 4, 5],
       [4, 5, 6, 7, 8]])

#2 数组的垂直组合(竖着连接)
np.vstack((b,c))
np.concatenate((b,c),axis=0)
np.append(b,c,axis=0)
#以上三句等效,结果都是下面:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8],
       [0, 1, 2],
       [3, 4, 5]])

#3 其它组合方式
np.append(a,b)
array([0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8])

np.append(a,c)
array([0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5])

数组的统计

函数 功能 示例
np.mean,np.average 计算平均值 ,加权平均值 np.mean(ary)
np.var 计算方差 np.var(ary)
np.std 计算标准差 np.std(ary)
np.min,np.max 计算最小值/最大值 np.min(ary)
np.argmin,np.argmax 返回最小值/最大值的索引 np.argmin(ary)
np.ptp 计算全距,即最大值与最小值的差 np.ptp(ary)
np.percentile 计算百分位在统计对象中的值 np.percentile(ary,90)
np.median 计算统计对象的中值 np.median(ary)
np.sum 计算统计对象的和 np.sum(ary)

posted on 2021-01-08 09:23  chengjon  阅读(257)  评论(0编辑  收藏  举报