七月在线课程的练习题
l1=[[1,2,3],[4,5,6]]
# Python循环--二维列表索引遍历二维列表
for i in range(len(l1)):
for j in range(len(l1[i])):
l1[i][j]+=1
print(l1)
# Map函数
l1=[[1,2,3],[4,5,6]]
def add1(*l1):
for i in range(len(l1)):
for j in range(len(l1[i])):
l1[i][j]+=1
return l1
list(map(add1,l1))
# Numpy计算(广播算法)
l1=[[1,2,3],[4,5,6]]
np.array(l1)+1
import numpy as np
arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
# Python列表表达式
list(zip(*arr))
#[list(row) for row in zip(*arr)]
# Numpy进行转置
arr1=np.array(arr)
arr1.T
l1=[[1,2,3],[4,5,6]]
#python
# 二维列表句柄遍历二维列表
for i in l1:
sum1=0
for j in i:
sum1+=j
print("行的和",sum1)
l2=[list(row) for row in zip(*arr)]
for i in l2:
sum2=0
for j in i:
sum2+=j
print("列的和",sum2)
#numpy
arr=np.array(l1)
print("行的和",list(np.sum(arr,axis=1)))#行
print("列的和",list(np.sum(arr,axis=0)))#列
import numpy as np
l=[[1,2,3],[4,5,6]]
l=np.array(l)
l
print("形状:",np.shape(l),"维度",np.ndim(l),"元素的个数",np.size(l),"数据类型",l.dtype)
import numpy as np
l=np.arange(60).reshape(3,2,10)
print(l)
print("第0维度中第二个元素的所有的信息:",l[0,1,:])
print("第0维度中所有元素的全部第0个维度(行),\
和最后一个维度(列)6-7列",l[0,0,[5,6]])
l=l.reshape(4,15)
print(l)
print("打乱矩阵内元素的顺序",np.random.shuffle(l))
print("按行维度进行排序\n",np.sort(l,axis=1))
print("按列维度进行排序\n",np.sort(l,axis=0))
print("行列转置\n",l.T)
print("将转至后的数组展平至一维数组\n",l.flatten())
arr1=[[1,2,3],[4,5,6]]
arr2=[[7,8,9],[10,11,12]]
np.hstack([arr1,arr2])
arr3=np.vstack([arr1,arr2])
print("按列进行分割为3个新元素",np.hsplit(arr3,3))
print("按行进行分割为2个新元素",np.vsplit(arr3,2))
print("arr3转换为Python列表",list(arr3))
import numpy as np
arr=np.random.rand(15).reshape(3,5)
print(arr)
# print(arr[1,3])
arr[1,3]=998
np.savetxt('random_matrix.txt',arr)
np.loadtxt('random_matrix.txt')
使用 numpy 实现 softmax
思路:
计算指数,并安全处理避免数字过大
按行求和
每行均除以计算的和
股票相关统计量计算
读入的给定的ibm股价数据中的收盘价及成交量
计算成交量加权平均价VWAP(收盘价)
计算时间加权平均价TWAP(收盘价)
找出IBM股票收盘价的极差
计算其收盘价的中位数,均值及方差
计算股票的收益率(简单收益率与对数收益率)
计算对数收益收益率大于1%的天数有多少?
成交量加权平均价是将多笔交易的价格按各自的成交量加权而算出的平均价,若是计算某一证券在某交易日的 VWAP,将当日成交总值除以总成交量即可。VWAP 可作为交易定价的一种方法,亦可作为衡量机构投资者或交易商 的交易表现的尺度。英文 Volume Weighted Average Price 。
假设某种商品最高价和最低价 2 种,其中最高价 300,占 10%;最低价 200,占 90%。
那该商品的加权平均价为:
a1 对应的是价格,a2 对应的是成交量
时间加权平均也是同样原理,按照越近的日期,所占的权重越高这样的方式去计算。
#普通收益率,注意:不含最后一个交易日的计算
numpy 中的 diff 函数用于行一行之间的求差运算。
对数收益率,取对数可以让数据更平稳,但是不会改变数据间的相关关系。有利于计算。 logreturn=np.diff(np.log©)
计算对数收益大于 1 的交易日 logreturn[logreturn*100>1].size
日期处理
导入文本文件中的股份数据,并将日期转为化对应周几后,再分别去计算从周一到周五的平均价,并找出周几平均 价最高,周几的平均价去低?
数据:ibm 股票数据
提示:自定义日期处理函数,在 loadtxt 的参数中对应处理函数与列。
按周对股票价格进行汇总:
在上一题的基础上选取有连续交易的三周时间(共计 15 天)后,按周进行汇总要求得出每周的开,高,低,收。 提示:numpy 中的 apply_along_axis 函数是高阶函数,能接收处理函数。
c=c[:-1]#对价格顺序进行反转,最新交易日放到最后
numpy.apply_along_axis(func, axis, arr, *args, **kwargs):
必选参数:func,axis,arr。
其中 func 是我们自定义的一个函数,函数 func(arr)中的 arr 是一个数组,函数的主要功能就是对数组里的每 一个元素进行处理,其中 axis 表示函数 func 对数组 arr 作用的轴。可选参数:*args, **kwargs。都是 func()函数额外的参数。返回的是一个根据 func()函数以及维度 axis 运算后得到的的数组.