https://crossincode.com/vip/homework/254/
import numpy as np
import matplotlib.pyplot as plt
#任务1:用 numpy 创建一个 2 * 2 的二维数组 ndarray,指定元素类型为 float,命名为 arr1
def assign1():
arr1 = np.ndarray([2,2],dtype=float)
print("-----------------assign1-------------------")
print(arr1)
#任务二:生成元素全为 0 的 6 * 6 矩阵 arr2;元素全为 1 的 6 * 6 矩阵 arr3;以及 6 * 6 的单位矩阵 arr4(任务提示:单位矩阵对角线元素为 )
def assign2():
arr2 = np.zeros([6,6])
arr3 = np.ones([6,6])
arr4 = np.eye(6)#生成一个n*n的单位矩阵
print("-----------------assign2-------------------")
print(arr2)
print(arr3)
print(arr4)
#任务三:运用 arange 函数生成生成 [0, 10) 区间内,步长为 2 的整数序列 arr5
def assign3():
arr5 = np.arange(0,10,2)
print("-----------------assign3-------------------")
print(arr5)
#任务四:生成 0~10 间的等差数列 arr6,元素个数为 6
def assign4():
arr6 = np.linspace(0,10,6)
arr6 = np.linspace(0,10,6,endpoint=False)#endpoint默认是true,false的话表示是否包括末尾值
print("-----------------assign4-------------------")
print(arr6)
#任务五:创建一个长度为 10 的随机数组(每个元素都是整数)并将最大值替换为 0
# (任务提示:numpy 随机函数为 random,利用 argmax() 得到数组最大值的位置,然后再将此位置数字利用切片替换
def assign5():
arr7 = np.random.randint(1,100,10)#最小值 最大值 数组size,这样写默认是一维,高维的要加[x,x]
print("-----------------assign5-------------------")
print(arr7)
mx = np.argmax(arr7)#一维数组的argmax返回的就是最大值所在位置,高维数组中第二个参数axis=0则返回每一行最大值在哪一列,axis=1则返回每一列最大值在那一行
arr7[mx]=0
print(arr7)
#任务六:计算数组 x = np.array([1,2,3,2,3,4,3,4,5,6]) 和数组 y = np.array([7,2,10,2,7,4,9,4,9,8]) 之间的欧式距离
def assign6():
x = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
y = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
# 这个是直接用欧式距离公式直白写法
dist = np.sqrt(np.sum(np.square(x - y)))
# numpy自带求欧式距离方法
dist1 = np.linalg.norm(x - y)
print("-----------------assign6-------------------")
print(dist,dist1)
#任务七:利用 seed 生成一组固定的随机数 np.random.seed(1) (阅读参考文章⑫),并用此组成模拟的资金价值曲线 values = np.random.randn(1000).cumsum()
#请利用 matplotlib 作出该资金价值曲线图
def assign7():
np.random.seed(1)
x=[1,2]
values = np.random.randn(1000).cumsum()
print("-----------------assign7-------------------")
plt.figure(figsize=(9,9),dpi=60)
plt.plot(values)#缺省x的时候那么x默认长度为len(y)
plt.tick_params(labelsize=19)#控制坐标轴字体大小
plt.xlabel("Day",fontsize = 19)
plt.ylabel("Values",fontsize = 19)
plt.xlim(0,1000,200)
plt.ylim(0,50,10)
ax = plt.subplot()
# ax.set_xlim(1, )
# ax.set_ylim(1, )
plt.show()
# #附加任务八:求最大回撤率
# max_drawdown = np.max(np.maximum.accumulate(values) - values)
# print(max_drawdown)
assign1()
assign2()
assign3()
assign4()
assign5()
assign6()
assign7()