python 基础 lesson7 作业提交

简单加法

在 Python 下对一个二维列表,l1=[[1,2,3],[4,5,6]],然后进行每个元素+1 的操作。

要求使用

 Python 循环

 Map 函数

 Numpy 计算(广播算法)

l1=[[1,2,3],[4,5,6]]

python循环

i=0
j=0
for i in range(len(l1)):
    for j in range(len(l1[i])):
        l1[i][j]+=1        

map

l1=[[1,2,3],[4,5,6]]
i = 0
def foo(x):
    for i in range(len(x)):
        x[i] += 1
    return x
    
list(map(foo,l1))

Numpy

l1=[[1,2,3],[4,5,6]]
plus = np.array(l1)+1
print(plus)

矩阵转置:

对 arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]进行行列互转

 

 Python 列表表达式

 Numpy 进行转置

Python 列表表达式

arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
[[row[i] for row in arr] for i in range(len(arr[0]))]

numpy

np.array(arr).transpose()

矩阵内部运算

 在 Python 下对一个二维列表,l1=[[1,2,3],[4,5,6]],要求求出按行与按列求和。

 在 numpy 下对一个二维列表,l1=[[1,2,3],[4,5,6]],要求求出按行与按列求和。

Python 下

按行求和

l1=[[1,2,3],[4,5,6]]
s = []

for i in l1:
    for j in i:
        j += j
    s.append(j)
print(s)

i = 0
for i in range(len(l1[0])):
    for row in l1:
        row[i]+=row[i]
    s.append(s)

numpy下

l1=[[1,2,3],[4,5,6]]

n1 = np.array(l1)
np.sum(n1,axis=1)

np.sum(n1,axis=0)

NDArray 创建与属性

 使用 Numpy 创建一个多维数组,请输出以下属性

 该数组的形状

 该数组的维度

 该数组元素的个数

 该数组的数据类型

n1 = np.arange(10).reshape(2,5)

形状

n1.shape

维度

n1.ndim

个数

n1.size

数据类型

n1.dtype

NDArray 的访问

创建一个包含从数字 1 到 60,的数组,并将于其形状变为为(3,2,10)的三维数组,并按如下要求访问这个三

维数组

n1 = np.linspace(1,60,60).reshape(3,2,10)

print(n1)

print('------------')

 访问第 0 维度中第二个元素的所有的信息

n1[1]

 访问第 0 维度中所有元素的全部第 0 个维度(行),和最后一个维度(列)6-7 列

n1[:,0,6:8]

 将该数组降维至二维,形状自行定义

n1 = n1.reshape(5,12)

 打乱矩阵内元素的顺序

np.random.shuffle(n1)

 按行维度进行排序

np.sort(n1,axis=0)

 按列维度进行排序

np.sort(n1,axis=1)                                                                                

 将降维后的数组进行行列转置

np.transpose(n1)

 将转至后的数组展平至一维数组。

n1.flatten()


拼接与切分 NDArray 对象

 先建立两个矩阵

arr1=[[1,2,3],[4,5,6]]
arr2=[[7,8,9],[10,11,12]] 

 对两个矩阵进行横向拼接,并输出结果

np.hstack([arr1,arr2])

 对两个矩阵进行纵向拼接,赋值给 arr3 并输出结果

arr3 = np.vstack([arr1,arr2])

 对 arr3 按列进行分割为 3 个新元素并输出

a,b,c = np.hsplit(arr3,3)

print(a,b,c)

 对 arr3 按行进行分割为 2 个新元素并输出

e,f = np.vsplit(arr3,2)
print(e,f)

 将 arr3 转换为 Python 列表,并指定数据类型为 int

arr3.astype('int32')
arr4 = arr3.tolist()

数据导入导出

 生成一个随机数矩阵,形状为(3,5)

n1 = np.random.rand(3,5)

 将其第 2 行第 4 列的元素修改为 998

n1[1][3]=998

 保存至本地文件 random_matrix.txt

np.savetxt('random_matrix.txt',n1)

 并尝试从这个文件中载入并验证修改是否正确

np.loadtxt('random_matrix.txt')

使用 numpy 实现 softmax

思路:

 计算指数,并安全处理避免数字过大

n1 = np.random.rand(3,10)*100

 按行求和

he = np.sum(n1,axis=1)

 每行均除以计算的和

np.divide(n1,he)

股票相关统计计算

import numpy as np

读入的给定的 ibm 股价数据中的收盘价及成交量

c,v = np.loadtxt('python-7.ibm.txt',delimiter='\t',usecols=(5,6),unpack=True,skiprows=1)

 计算成交量加权平均价 VWAP(收盘价)

np.average(c,weights=v)

 计算时间加权平均价 TWAP(收盘价)

t = np.arange(len(c))
np.average(c,weights=t)

 找出 IBM 股票收盘价的极差

max(c)-min(c)

 计算其收盘价的中位数,均值及方差

np.median(c)
np.mean(c)
np.var(c)

 计算股票的收益率(简单收益率与对数收益率)

c1=c[::-1]
c2=c1[0:-1]
diff1 = np.diff(c1)/c2

 计算对数收益收益率大于 1%的天数有多少?

diff1_where = np.where(diff1)
diff2 = np.diff(np.log(c1))
diff2[diff2*100>0]
np.where(diff2*100>10)
diff2[diff2*100>1].size



后面两道大题自己做不出来 ,
已邀请:

要回复问题请先登录注册

返回顶部