第一阶段-第8天-NumPy入门

第一阶段-第8天-NumPy入门
今日目标安装并熟悉NumPy理解数组与列表的区别掌握基本的NumPy运算理解向量化的好处学习内容1. 安装NumPypip3installnumpy验证安装importnumpyasnpprint(np.__version__)2. 创建数组importnumpyasnp# 从列表创建anp.array([1,2,3,4,5])print(a)# [1 2 3 4 5]print(type(a))# class numpy.ndarray# 创建特定形状的数组bnp.zeros(5)# [0. 0. 0. 0. 0.]cnp.ones(5)# [1. 1. 1. 1. 1.]dnp.arange(5)# [0 1 2 3 4]enp.linspace(0,10,5)# [ 0. 2.5 5. 7.5 10.]print(zeros:,b)print(ones:,c)print(arange:,d)print(linspace:,e)3. 数组的基本运算importnumpyasnp anp.array([1,2,3,4,5])bnp.array([10,20,30,40,50])# 逐元素运算print(加法:,ab)# [11 22 33 44 55]print(减法:,a-b)# [-9 -18 -27 -36 -45]print(乘法:,a*b)# [ 10 40 90 160 250]print(除法:,b/a)# [10. 10. 10. 10. 10.]# 标量运算print(乘以2:,a*2)# [ 2 4 6 8 10]print(平方:,a**2)# [ 1 4 9 16 25]# 内置函数print(求和:,np.sum(a))# 15print(平均值:,np.mean(a))# 3.0print(最大值:,np.max(a))# 5print(最小值:,np.min(a))# 14. 多维数组importnumpyasnp# 二维数组矩阵矩阵np.array([[1,2,3],[4,5,6],[7,8,9]])print(矩阵:\n,矩阵)print(形状:,矩阵.shape)# (3, 3)print(行数:,矩阵.shape[0])# 3print(列数:,矩阵.shape[1])# 3# 按列计算print(每列的和:,np.sum(矩阵,axis0))# [12 15 18]# 按行计算print(每行的和:,np.sum(矩阵,axis1))# [ 6 15 24]5. 向量化 vs 循环importnumpyasnpimporttime n1000000# 方法1纯Python循环a_listlist(range(n))b_listlist(range(n,2*n))starttime.time()结果[xyforx,yinzip(a_list,b_list)]python_timetime.time()-start# 方法2NumPy向量化a_npnp.arange(n)b_npnp.arange(n,2*n)starttime.time()结果a_npb_np numpy_timetime.time()-startprint(fPython循环:{python_time:.4f}秒)print(fNumPy向量化:{numpy_time:.4f}秒)print(f加速比:{python_time/numpy_time:.1f}倍)通常NumPy比纯Python快10-100倍。今日练习练习1用NumPy重新计算MSEimportnumpyasnp 真实值np.array([1,3,5,7,9])预测值np.array([1.5,2.8,5.2,6.9,9.5])# 一行代码计算MSEmsenp.mean((预测值-真实值)**2)print(fMSE {mse:.4f})练习2批量计算预测值importnumpyasnp 输入np.array([1,2,3,4,5])w2.0b1.0# 向量化预测预测值w*输入bprint(预测值:,预测值)# 输出: [ 3. 5. 7. 9. 11.]练习3矩阵乘法importnumpyasnp# 两个矩阵相乘Anp.array([[1,2],[3,4]])Bnp.array([[5,6],[7,8]])Cnp.dot(A,B)# 或者 A Bprint(A × B \n,C)# [[19 22]# [43 50]]验收标准能安装并使用NumPy能创建一维和二维数组能进行基本的数组运算能解释向量化相比循环的优势