NUMPY INTRODUCTION NUMPY 提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于处理多维数组,用于储存和处理大型矩阵,本身是由C语言开发,比python自身的列表结构要高效的多。 高性能科学计算和数据分析的基础包,总结: NUMPY是一个Python科学计算基础库,提供了多维向量 NUMPY提供了用于数组快速操作的方法,数学,逻辑,排序,选择,线性代数,统计等 NUMPY采用预编译的C代码完成,效率更高 安装: 使用: 行业惯例将np作为numpy,将pd作为pandas。下文所有np均指的是numpy 认识轴: 轴【axis】: 既然是多维数组,先理清一下轴,类似于我们学习的X、Y、Z 二维数组的轴: 图一 三维数组的轴: 图二 使用NUMPY创建数组: 例:创建一个图一的数组 方法1: np.array([]) [[1 2 3] [4 5 6]] 方法2: np.arange() #1~6 步数为1 [1,2,3,4,5,6] #将一维数组转变为二维 [[1 2 3] [4 5 6]] 常用属性和方法 形状 ndarray.shape 重新改变数组形状 ndarray.reshape(x_dim, y_dim, z_dim,…) 数组的维度 ndarray.ndim itemsize输出array元素的字节数 numpy.itemsize 数组的形状: nparray.shape: #查看数组的形状维度 (6,) nparray.reshape: #改变数组的维度,规则1*6==2*3 (2, 3) 获取数组的维度,可使用len(nparray.shape),即元祖的维度,即numpy.itemsize 将多维数组转换为一维数组方式: 自己动手: 实际又是自己在造轮子,可使用np自带方法: nparray= nparray.flatten() [[1 2 3] [4 5 6]] [1 2 3 4 5 6] 数组的计算: 情况一:数组和数值直接运算 [[1 2 3] [4 5 6]] 数组可以直接与数字进行四则运算(+、-、*、/) 即数组里的每一个值分别四则运算 [[3 4 5] [6 7 8]] [[inf inf inf] [inf inf inf]] 在numpy中,/0并不会报错, inf(infimum)表示无穷, nan(not a number)代表未定义或不可表示的值, 情况二:数组与数组计算 这里要注意了,数组和数组的计算和矩阵是不同的 矩阵的乘积: 数组的乘积: 相同的多维数组或直接与单维度轴相同,可以直接四则运算: 方式:广播(broadcast) a: [[1 2 3] [4 5 6]] [[ 1 4 9] [16 25 36]] b: [1 2 3] [[ 1 4 9] [ 4 10 18]] c: [[1] [2]] [[ 1 2 3] [ 8 10 12]] 数组的操作: 1、转置操作 [[1 2 3] [4 5 6]] a.T [[1 4] [2 5] [3 6]] a.transpose() [[1 4] [2 5] [3 6]] a.swapaxes(1,0) #交换0轴和1轴 [[1 4] [2 5] [3 6]] 2、切片 [[1 2 3] [4 5 6] [7 8 9]] 2.1取行 2.1.1、取第x行 print(a[x]) [4 5 6] 2.1.2、取多行 print(a[[x,x]]) [[1 2 3] [7 8 9]] 2.1.3、取连续多行 print(a[x:y:z]) #连续取从x行到y行,不包括y,间隔为z [[1 2 3] [4 5 6] [7 8 9]] [[1 2 3] [7 8 9]] 2.2取列 和取行类似 a[:,x]#取x列 a[:,x:y]#取下标为x到下标为y-1的列 a[:,x:y:z]#取下标为x到下标为y-1,间隔为z的列 a[:,[x,y]] #取下标为x,y的两列 2.3取某一点 a[1,1]=a[1][1] 5 2.4取某一部分 [[5 6] [8 9]] 布尔索引、三元运算、裁剪 [[1 2 3] [4 5 6] [7 8 9]] 布尔索引: [[False False False] [False False True] [ True True True]] print(a[a>5]) [6 7 8 9] [[1 2 3] [4 5 5] [5 5 5]] 三元运算: [[1 1 1] [1 9 9] [9 9 9]] 裁剪 [[3 3 3] [4 5 6] [7 7 7]] 常用的统计函数 求和:nparray.sum(axis=None) 均值:nparray.mean(axis=None) 受离群点的影响较大 中值:np.median(nparray,axis=None) 最大值:nparray.max(axis=None) 最小值:nparray.min(axis=None) 极值:np.ptp(nparray,axis=None) 即最大值和最小值只差 标准差:nparray.std(axis=None) 其他方法 获取最大值最小值的位置 np.argmax(nparray,axis=0) np.argmin(nparray,axis=1) 创建一个全0的数组: np.zeros((3,3)) [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] 创建一个全1的数组: np.ones((3,3)) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] 创建一个对角线为1的正方形数组(方阵):np.eye(3) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] NUMPY中的复制操作 a=b 完全不复制,a和b相互影响 a = b[:],视图的操作,一种切片,会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的, a = b.copy(),复制,a和b互不影响 等等用法: numpy.sort() numpy.amin() numpy.amax() numpy.mean() numpy.average() numpy.std() # sqrt(mean((x - x.mean())**2)) numpy.var() # mean((x - x.mean())** 2) numpy.sin() cos() tan() pi arcsin(), arccos() arctan() degrees() (编辑:长春站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|