机器学习中numpy的经典必用一份脚本足够!!

上传人:ai****ue 文档编号:53729847 上传时间:2022-02-11 格式:DOCX 页数:8 大小:23.68KB
收藏 版权申诉 举报 下载
机器学习中numpy的经典必用一份脚本足够!!_第1页
第1页 / 共8页
机器学习中numpy的经典必用一份脚本足够!!_第2页
第2页 / 共8页
机器学习中numpy的经典必用一份脚本足够!!_第3页
第3页 / 共8页
资源描述:

《机器学习中numpy的经典必用一份脚本足够!!》由会员分享,可在线阅读,更多相关《机器学习中numpy的经典必用一份脚本足够!!(8页珍藏版)》请在装配图网上搜索。

1、# 机器学习中numpy的经典必用# Scipy 是一个用于数学、科学、工程领域的常用软件包,# 可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、# 信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解 决问题。# 1# Load Library import numpy as np from scipy import sparse# 将向量创建为行vector_row = np.array( 1,# 将向量创建为列vector_column = np.array(# Numpy 中创建一个二维数组,# Create a Matrixmatrix

2、= np.array( 1, 2, print(二维矩阵 matrix: 2, 3)1, 2, 3)并将其称为矩阵,它包含2行3列3, 4, 5, 6) .format(matrix)# 2# 创建稀疏矩阵(sparse Matrix )# 显示非零元素的位置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

3、# 描述矩阵# Create a Matrixmatrix = np.array( 1, 2, 3, 4, 5, 6, 7, 8, 9)# View the Number of Rows and Columnsprint(矩阵的属性行列数: .format(matrix.shape)# View the number of elements (rows*columns)print(矩阵的元素个数 size: .format(matrix.size)# View the number of Dimensions(2 in this case)print(矩阵的维度 ndim: .format(m

4、atrix.ndim)# 3# 使用函数操作矩阵元素# 建立一个加100的函数def add_100(i):i = i + 100 return i# 把函数转化为矢量函数(vectorized function ) vectorized_add_100 = np.vectorize(add_100)# 让函数祚用血矩阵的所有元素一print(让函数加 100 作用于矩阵 matrix: .format(vectorized_add_100(matrix)一 一# 4# 矩阵的大小print(矩阵元素的最大值: .format(np.max(matrix)print(返回元素的最小值: .fo

5、rmat(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(ma

6、trix.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(mat

7、rix的秩: .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

8、(matrix.trace()# 7# 查找特征值和特征向量= np.linalg.eig(matrix)eigenvalues, eigenvectorsprint(矩阵的特征值:,矩阵的特征向量: .format(eigenvalues, eigenvec tors)vector_1= np.array(vector_2= np.array(#计五点积print(两个向量的点积#第二种表达方法print(两个向量的点积# 矩阵的点积1,2,3)4,5,6)1: .format(np.dot(vector_1,vector_2)2: .format(vector_1vector_2)# 8#

9、 矩阵的加减乘除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,10prin

10、t( 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的基础操作# 访问列表元素,切片作用于数组import numpy as np arr = np.array( 2.0 , 6.0 , 5.0 , 5.0 )print(arr:3)print(arr 0)print(arr)# 1# 提取所包含的不同元素,使用unique函数arr_unique = np.

11、unique(arr)print( unique 提取数列中的不同元素: .format(arr_unique)# 数组元素的排序也可以用sort()函数,数组的索引用argsort() 函数 arr_sort = np.sort(arr)print( sort 从小到大的排序: .format(arr_sort)arr_sort_index = np.argsort(arr)print( argsort 进行排序的索引: ” .format(arr_sort_index)# array_equal用于对比两个数组是否相等arr1=np.array(arr2=np.array(arr3=np.

12、array(print( arry_equal rr1)print( arry_equal rr2)print( arry_equal rr3)# 对比好像显示只在意数值,而不在意数据类型1, 3,5,7)2, 6,5,5)3, 6,5,5, dtype=int)对比两个数组是否相等:.format(np.array_equal(arr,a对比两个数组是否相等:.format(np.array_equal(arr,a对比两个数组是否相等:.format(np.array_equal(arr,a# 4# shuffle()用来打乱数组的排列,变成随机排列# 注意这个函数不返回任何东西np.ran

13、dom.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.format(matrix_10, 0).format(matrix_11 , 2)# 多维数组的访问print(矩阵第1行第1列的数值:matrix_10, 0= print(矩阵第2行第3列的数值:matrix_11

14、,2= # 7# 多维数组的切片操作,使用冒号索引,切片仍然还是矩阵# 0:1其实指的是0一个效果,跟range 一样,行和列的序号仍然是从0开始print(矩阵的第一行的第 1个数的切片矩阵:martrix_10, 0:1=.format(matrix_1 0, 0: 1)print(矩阵的第一行的前两个数的切片矩阵:martrix_10, 0:2=.format(matrix_1 0, 0: 2)print(矩阵的第二行的前两个数的切片矩阵:martrix_11,0:2=.format(matrix_1 1, 0: 2)print(矩阵的第二行的所有数的切片矩阵:martrix_11, :

15、= .format(matrix_1 1,:)# 8# 将flatten()函数将多维数组合并成一维数组.format(arr4)arr4 = matrix_1.flatten()print(将二维矩阵 matrix_1合并成以为数组 arr4: # 9# shape()函数查看数组对象的属性:大小print(shape查看数组元素matrix_1的属性大小:” .format(matrix_1.shape)# 出ype返回数组元素的类型 一一print(dtype返回数组元素martix_1的元素类型: .format(matrix_1.dtype)# 10# len()函数返回数组的第一维

16、的长度:以为数组的元素个数,二维数组的行数print( len()返回一21数组 arr4 的长度: .format(len(arr4)print( len()返回二维矩阵的第一维度的长度: matrix: .format(len(matrix_ 1)# 11# in作用于数组中是否有该元素print(in函数输出3是不是在 arr4中:.format(3 inarr4)print(in函数输出7是不是在 arr4中:.format(7 inarr4)# 12# reshape() 函数,用于调整重塑数组的结构。6 = 2*3# 这里的2*3可不是按照python的从零开始来的喔! !matr

17、ix_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(ma

18、trix_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_1np.newaxis,:, arr_1np.newaxis, :.shap

19、e)# 15# concatenate()函数用于数组的操作# 取决与数组的维度,多个一维数组可以相继连接,将要连接的多个数组置于中作为参数 输入# 对于一维数组函数不带任何参数就默认为是第一个轴arr_2=np.array(arr_3=np.array(arr_4=np.array(# 对于二维数组要指定是哪条轴相连接10, 20, 30, dtype=float)31,43,54,61,dtype=float)71,41,51,40,(dtype=float) arr_concat = np.concatenate(arr_2, arr_3, arr_4)print( concatenat

20、e函数将三个序列进行连接: .format(arr_concat)# 二维数组的操作,行连接就是行数增加,列连接就是列增加arr_4= np.array(arr_5= np.array(arr_concat_axis0 arr_concat_axis1 print( concatenate31,43,54,61, 1,2,3,4, dtype71,41,51,40, 7,8,9,7, dtype= np.concatenate(arr_4, arr_5), axis= np.concatenate(arr_4, arr_5), axis函数将两个数列按曲亍或而U进行连接:=float)=flo

21、at)=0)=1)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 =flo at)print( 矩阵 matrix: .format(matrix)matrix_det = np.linalg.det(matrix)print(矩阵 matrix 的行列式: matrix_det: .format(matri

22、x_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

23、.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()p

24、rint( arr_2的数据总和: .format(sum_arr)# numpy数组创建import numpy as nparr = 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函数,易错点1

25、arr1 = arrprint(仅仅复制了指向同一个地址: .format(arrl)arr1 = arr.copy()print(这个时候才是创建了对象: .format(arrl)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(arr

26、2.fill( 1 )print(arr2.fill( 2)print( fill填充的数组变化 ar .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# Nu

27、mpy还提供几个创建二维数组(矩阵)的函数# identity()函数创建单位矩阵,其行列数用参数指定arr5 = np.identity( 5, dtype =float)print(identity。函数创建二维单位矩阵arr5: .format(arr5)# eye函数返回第k条对角线上元素为1的矩阵# 从后续实验结果来看,对角线的形成是以 N、M中较小值为标准生成一个方阵的对角线,# 当索引index取值为3时则该方阵对角线向右移动3个单位,当索引index取值为-2 时则该方针对角线向左移动2个单位arr6 = np.eye(3, k =1 , dtype=float)print(a

28、rr6)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)print(运用ones进行矩阵的初始化: .format(arr7)arr7 = np.zeros( 2, 3), dtype =int)print(运用zeros进行矩阵的初始化: .format(arr7)# (4)

29、 而zeros_like 和ones_like 函数,创建的是跟现有数组元素的类型和维度都相 同的数组arr8 = np.array( 1, 2, 3, 4, 5, 6, float)arr8 = np.zeros_like(arr8)print(仿制别人的类型造自己的房子zeros_like: .format(arr8)arr8 = np.ones_like(arr8)print(仿制别人的类型造自己的房子ones_like: .format(arr8)# 另外一种创建二维数组的方法是:vstack函数,表示垂直方向合并以一维数组arr_1= np.array(1 , 3 , 5)arr_2

30、= np.array(2 , 4 , 8)arr_3 = np.vstack(arr_1, arr_2)print(通过垂直方向合成二维数组: .format(arr_3)# (6)二维数组也可以用random子模块按照某种分布进行创建# 随机从0到1的均匀分布中选取数字作为数组元素,创建2x3的数组 arr_4 = np.random.rand(2 , 3)print(通过随机分布中的均匀分布抽样二维数组: .format(arr_4)# 利用多元正态分布来创建二维数组:这个重点待解决# numpy.random.multivariate_normal(mean, cov, size, check_valid, tol)# mean :Mean of the N-dimensional distribution# cov :分布的协方差矩阵。为了正确采样,它必须是对称且正定的。# 列表10,0是均值向量arr_5 = np.random.multivariate_normal(10, 0, 3, 1 , 1, 4, size 5, )print(多元正态分布来创建二维数组arr_5: .format(arr_5)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!