版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#机器学习中numpy的经典必用#Scipy是一种用于数学、科学、工程领域的常用软件包,#可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、#信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效处理问题。#1#LoadLibraryimportnumpyasnpfromscipyimportsparse#将向量创立为行vector_row=np.array([1,2,3])#将向量创立为列vector_column=np.array([[1],[2],[3]])#Numpy中创立一种二维数组,并将其称为矩阵,它包括2行3列#CreateaMatrixmatrix=np.array([[1,2,3],[4,5,6]])print("二维矩阵matrix:{}".format(matrix))#2#创立稀疏矩阵(sparseMatrix)#显示非零元素的位置matrix_1=np.array([[0,0],[0,1],[3,0]])print("二维含零元素的矩阵matrix_1:{}".format(matrix_1))matrix_1_sparse=sparse.csr_matrix(matrix_1)print("二维矩阵的稀疏矩阵:{}".format(matrix_1_sparse))#3#描述矩阵#CreateaMatrixmatrix=np.array([[1,2,3],[4,5,6],[7,8,9]])#ViewtheNumberofRowsandColumnsprint("矩阵的属性行列数:{}".format(matrix.shape))#Viewthenumberofelements(rows*columns)print("矩阵的元素个数size:{}".format(matrix.size))#ViewthenumberofDimensions(2inthiscase)print("矩阵的维度ndim:{}".format(matrix.ndim))#3#使用函数操作矩阵元素#建立一种加100的函数defadd_100(i):i=i+100returni#把函数转化为矢量函数(vectorizedfunction)vectorized_add_100=np.vectorize(add_100)#让函数作用域矩阵的所有元素print("让函数加100作用于矩阵matrix:{}".format(vectorized_add_100(matrix)))#4#矩阵的大小print("矩阵元素的最大值:{}".format(np.max(matrix)))print("返回元素的最小值:{}".format(np.min(matrix)))print("找到矩阵每列的最大值:{}".format(np.max(matrix,axis=0)))print("找到每一行元素的最大值:{}".format(np.max(matrix,axis=1)))#二维矩阵的均值,方差和原则方差print("矩阵matrix的均值:{}".format(np.mean(matrix)))print("矩阵matrix的方差:{}".format(np.std(matrix)))print("矩阵matrix原则方差:{}".format(np.var(matrix)))#5#数组的重塑print("矩阵转换一列:{}".format(matrix.reshape(9,1)))#这里-1表达尽量多的列print("矩阵转换为一行的二维数组:{}".format(matrix.reshape(1,-1)))#假如我们在reshape的参数上只放了一种参数,阐明我们要返回的是一行n列的数组print("矩阵转换为一行序列的表达措施:{}".format(matrix.reshape(9)))#6#矩阵的转置print("矩阵matrix的转置:{}".format(matrix.T))#矩阵的秩#矩阵的行列式print("matrix的行列式:{}".format(np.linalg.det(matrix)))#计算矩阵的秩print("matrix的秩:{}".format(np.linalg.matrix_rank(matrix)))#矩阵的对角线print("矩阵的主对角线:{}".format(matrix.diagonal()))#可以使用偏移来查看它的次对角线,正数表达右移,负数表达左移:print("矩阵的:{}".format(matrix.diagonal(offset=1)))#可以使用偏移来查看它的次对角线,正数表达右移,负数表达左移:print("矩阵的:{}".format(matrix.diagonal(offset=-1)))#numpy.trace是求shape的对角线上的元素的和print("matrix的迹:{}".format(matrix.trace()))#7#查找特性值和特性向量eigenvalues,eigenvectors=np.linalg.eig(matrix)print("矩阵的特性值:{},矩阵的特性向量:{}".format(eigenvalues,eigenvectors))#矩阵的点积vector_1=np.array([1,2,3])vector_2=np.array([4,5,6])#计算点积print("两个向量的点积1:{}".format(np.dot(vector_1,vector_2)))#第二种体现措施print("两个向量的点积2:{}".format(vector_1@vector_2))#8#矩阵的加减乘除matrix_2=np.array([[7,8,9],[4,5,6],[1,2,3]])#加print("矩阵相加:{}".format(np.add(matrix,matrix_2)))#减print("矩阵想减:{}".format(np.subtract(matrix,matrix_2)))#乘print("矩阵的乘法:{}".format(matrix*matrix_2))#9#矩阵的逆print("矩阵的逆矩阵:{}".format(np.linalg.inv(matrix)))#矩阵的随机数产生np.random.seed(1)#产生3个随机的整型数界于[1,10]print("3个随机数:{}".format(np.random.randint(0,10,3)))#产生3个随机数满足一种均值为1.0,方差为2.0的正态分布print("3个随机数的正态分布:{}".format(np.random.normal(1.0,2.0,3)))############################numpy的基础操作#访问列表元素,切片作用于数组importnumpyasnparr=np.array([2.0,6.0,5.0,5.0])print(arr[:3])print(arr[0])print(arr)#1#提取所包括的不一样元素,使用unique函数arr_unique=np.unique(arr)print("unique提取数列中的不一样元素:{}".format(arr_unique))#2#数组元素的排序也可以用sort()函数,数组的索引用argsort()函数arr_sort=np.sort(arr)print("sort从小到大的排序:{}".format(arr_sort))arr_sort_index=np.argsort(arr)print("argsort进行排序的索引:{}".format(arr_sort_index))#3#array_equal用于对比两个数组与否相等#对比仿佛显示只在意数值,而不在意数据类型arr1=np.array([1,3,5,7])arr2=np.array([2,6,5,5])arr3=np.array([2,6,5,5],dtype=int)print("arry_equal对比两个数组与否相等:{}".format(np.array_equal(arr,arr1)))print("arry_equal对比两个数组与否相等:{}".format(np.array_equal(arr,arr2)))print("arry_equal对比两个数组与否相等:{}".format(np.array_equal(arr,arr3)))#4#shuffle()用来打乱数组的排列,变成随机排列#注意这个函数不返回任何东西np.random.shuffle(arr1)print("shuffle函数打乱arr1后的次序输出:{}".format(arr1))#5#多维数组的书写措施:与列表的操作不一样,多维列表各维度用逗号隔开matrix_1=np.array([[4,5,6],[7,8,9]],dtype=float)print("二维数组的体现形式:{}".format(matrix_1))#6#多维数组的访问print("矩阵第1行第1列的数值:matrix_1[0,0]={}".format(matrix_1[0,0]))print("矩阵第2行第3列的数值:matrix_1[1,2]={}".format(matrix_1[1,2]))#7#多维数组的切片操作,使用冒号索引,切片仍然还是矩阵#0:1其实指的是0一种效果,跟range同样,行和列的序号仍然是从0开始print("矩阵的第一行的第1个数的切片矩阵:martrix_1[0,0:1]={}".format(matrix_1[0,0:1]))print("矩阵的第一行的前两个数的切片矩阵:martrix_1[0,0:2]={}".format(matrix_1[0,0:2]))print("矩阵的第二行的前两个数的切片矩阵:martrix_1[1,0:2]={}".format(matrix_1[1,0:2]))print("矩阵的第二行的所有数的切片矩阵:martrix_1[1,:]={}".format(matrix_1[1,:]))#8#将flatten()函数将多维数组合并成一维数组arr4=matrix_1.flatten()print("将二维矩阵matrix_1合并成认为数组arr4:{}".format(arr4))#9#shape()函数查看数组对象的属性:大小print("shape查看数组元素matrix_1的属性大小:{}".format(matrix_1.shape))#dtype返回数组元素的类型print("dtype返回数组元素martix_1的元素类型:{}".format(matrix_1.dtype))#10#len()函数返回数组的第一维的长度:认为数组的元素个数,二维数组的行数print("len()返回一维数组arr4的长度:{}".format(len(arr4)))print("len()返回二维矩阵的第一维度的长度:matrix:{}".format(len(matrix_1)))#11#in作用于数组中与否有该元素print("in函数输出3是不是在arr4中:{}".format(3inarr4))print("in函数输出7是不是在arr4中:{}".format(7inarr4))#12#reshape()函数,用于调整重塑数组的构造。6=2*3#这里的2*3可不是按照python的从零开始来的喔!!matrix_2=arr4.reshape((3,2))print("reshape函数把一种6个元素的一维序列塑导致3*2的矩阵输出matrix_2:{}".format(matrix_2))#13#transpose()矩阵的转置:也就是行列互换#同样也可以使用Tmatrix_3=matrix_2.transpose()matrix_T=matrix_2.transpose()print("transpose将矩阵转置为matrix_3:{}".format(matrix_3))print("transpose||T两种转置的措施是同样的:{}".format(np.array_equal(matrix_3,matrix_T)))#14#newaxis()函数增长维度:调整数组元素位置arr_1=np.array([14,32,13],dtype=float)print("新建数组arr_1:{},属性大小为:{}".format(arr_1,arr_1.shape))print("newaxis增长数组维度:{},属性大小为:{}".format(arr_1[:,np.newaxis],arr_1[:,np.newaxis].shape))print("newaxis增长数组维度:{},属性大小为:{}".format(arr_1[np.newaxis,:],arr_1[np.newaxis,:].shape))#15#concatenate()函数用于数组的操作#取决与数组的维度,多种一维数组可以相继连接,将要连接的多种数组置于中作为参数输入#对于一维数组函数不带任何参数就默认为是第一种轴#对于二维数组要指定是哪条轴相连接arr_2=np.array([10,20,30],dtype=float)arr_3=np.array([31,43,54,61],dtype=float)arr_4=np.array([71,41,51,40],dtype=float)arr_concat=np.concatenate((arr_2,arr_3,arr_4))print("concatenate函数将三个序列进行连接:{}".format(arr_concat))#二维数组的操作,行连接就是行数增长,列连接就是列增长arr_4=np.array([[31,43,54,61],[1,2,3,4]],dtype=float)arr_5=np.array([[71,41,51,40],[7,8,9,7]],dtype=float)arr_concat_axis0=np.concatenate((arr_4,arr_5),axis=0)arr_concat_axis1=np.concatenate((arr_4,arr_5),axis=1)print("concatenate函数将两个数列按照行或者列进行连接:axis0={},axis1={}".format(arr_concat_axis0,arr_concat_axis1))#16#numpy的linalg子模块,实现了矩阵的多种线性代数运算。#计算矩阵的行列式的值matrix=np.array([[74,22,10],[92,31,17],[21,22,12]],dtype=float)print("矩阵matrix:{}".format(matrix))matrix_det=np.linalg.det(matrix)print("矩阵matrix的行列式:matrix_det:{}".format(matrix_det))#17#inv函数生成矩阵的逆矩阵inv_matrix=np.linalg.inv(matrix)print("矩阵matrix的逆矩阵inv_matrix:{}".format(inv_matrix))inv_mul_matrix=np.dot(inv_matrix,matrix)print("matrix的逆矩阵与matrix的乘积:{}".format(inv_mul_matrix))#18#矩阵的特性值(eigenvalues)和特性向量(eigenvectors)计算措施[vals,vecs]=np.linalg.eig(matrix)eig=np.linalg.eig(matrix)print("矩阵matrix的特性值vals:{},特性向量vecs:{}".format(vals,vecs))print("矩阵matrix的特性值vals:{},特性向量vecs:{}".format(eig[0],eig[1]))#19#记录学与数学函数#数组元素记录信息函数:聚合型运算:求和,均值,中位数和原则差arr_2=np.random.rand(8,4)mean_arr=arr_2.mean()print("arr_2的平均值mean_arr:{}".format(mean_arr))sum_arr=arr_2.sum()print("arr_2的数据总和:{}".format(sum_arr))#numpy数组创立importnumpyasnparr=np.array([2,6,7,8],float)print(arr)print(type(arr))#1#数组转换成列表arr=np.array([1,2,3],float)arr.tolist()print(arr.tolist())print(type(arr.tolist()))print(list(arr))print(type(list(arr)))print(type(arr))#2#用既有数组创立新的对象,使用"copy"函数,易错点1arr1=arrprint('仅仅复制了指向同一种地址:{}'.format(arr1))arr1=arr.copy()print('这个时候才是创立了对象:{}'.format(arr1))arr1[0]=0print('试图修改arr1的第一种值:{}'.format(arr1))print('再来看arr是没有发生变化的:{}'.format(arr))print('阐明复制成功了!!')#3#用同一种值来覆盖一组原有的数组值,使用'fill'函数,用处是作为初始化#fill是个功能命令,返回值当然是0或1,易错点2arr2=np.array([1,2,3,4,5])print(arr2.fill(1))print(arr2.fill(2))print('fill填充的数组变化arr2:{}'.format(arr2))#4#使用random随机初始化元素数组:permutation内的参数代表数组长度arr3=np.random.permutation(3)print('random随机化数组arr3:{}'.format(arr3))#使用正态分布normal()函数进行抽样一系列数组:均值为0,arr4=np.random.normal(0,1,5)print('random.normal正态分布抽样数组arr4:{}'.format(arr4))#5#Numpy还提供几种创立二维数组(矩阵)的函数#(1)identity()函数创立单位矩阵,其行列数用参数指定arr5=np.identity(5,dtype=float)print('identity()函数创立二维单位矩阵arr5:{}'.format(arr5))#(2)eye函数返回第k条对角线上元素为1的矩阵#从后续试验成果来看,对角线的形成是以N、M中较小值为原则生成一种方阵的对角线,#当索引index取值为3时则该方阵对角线向右移动3个单位,当索引index取值为-2时则该方针对角线向左移动2个单位arr6=np.eye(3,k=1,dtype=float)print(arr6)arr6=np.eye(3,k=0,dtype=float)print(arr6)arr6=np.eye(3,k=2,dtype=float)print(arr6)#(3)创立新数组(1或2维)最常用的函数是zeros和ones,它们按照指定的维度创立数组,并用0或1填充arr7=np.ones((2,3),dtype=float)prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年13年安全培训内容重点
- 2026年跨境电商用户隐私保护合同
- 2026年旅游公司合作合同协议
- 2026年安全培训内容事例实操要点
- 2026年一个月的工作总结报告核心要点
- 文山壮族苗族自治州麻栗坡县2025-2026学年第二学期五年级语文第六单元测试卷(部编版含答案)
- 荆州市江陵县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 2026年跑腿安全培训内容实操流程
- 安阳市文峰区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 宣城市绩溪县2025-2026学年第二学期三年级语文期中考试卷部编版含答案
- 2025年西安科技大学专职辅导员招聘笔试备考试题(含答案详解)
- 2026届湖南省岳阳市岳阳县达标名校中考物理押题试卷含解析
- 2025年4月自考《思想道德修养与法律基础03706》真题试题和答案
- 表皮样囊肿与皮脂腺囊肿超声鉴别诊断
- 私企请假管理办法细则
- 2025年广东省中考物理试题卷(含答案)
- 酒店旅拍服务合作协议书范本
- EPC项目总结资料
- 车排子地区新近系沙湾组油藏区块探井转开发井产能建设项目环评报告
- T/CECS 10104-2020建筑外墙外保温装饰一体板
- 各地市可编辑的山东地图
评论
0/150
提交评论