Python基础numpy实验报告总结 numpy实验心得 |
您所在的位置:网站首页 › numpy实验报告 › Python基础numpy实验报告总结 numpy实验心得 |
目录 Numpy一、简介1、安装2、特殊的导包二、ndarray-多维数组对象1、创建ndarray数组1.1 array1.2 arange1.3 linspace1.4 zeros1.5 ones1.6 empty1.7 eye2、ndarray对象的特点3、ndarray的常用属性4、ndarray的数据类型5、索引和切片5.1 一维数组5.1.1 索引5.1.2 切片5.2 二维数组5.2.1 索引5.2.2 切片5.3 布尔型索引5.4 花式索引三、通用函数1、常用通用函数1.1 一元函数1.2 二元函数2、数学统计方法3、随机数Numpy一、简介Numpy是高性能科学计算和数据分析的基础包。它也是pandas等其他数据分析的工具的基础,基本所有数据分析的包都用过它。 NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。 它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语言的运算中,明显地提高了程序的运算速度。 1、安装pip install numpy2、特殊的导包数据分析界约定俗成的将numpy包导入命名为np import numpy as np二、ndarray-多维数组对象Numpy的核心特征就是N-维数组对 —— ndarray。 1、创建ndarray数组方法 描述 array() 将列表转换为数组,可选择显式指定dtype arange() range的numpy版,支持浮点数 linspace() 类似arange(),第三个参数为数组长度 zeros() 根据指定形状和dtype创建全0数组 ones() 根据指定形状和dtype创建全1数组 empty() 根据指定形状和dtype创建空数组(随机值) eye() 根据指定边长和dtype创建单位矩阵 1.1 arraynp.array([[a,b,c],[x,y,z],···]) 列表套列表,内嵌的列表个数为维度。 # 创建一维数组 >>>:arr = np.array([1,2,5,8]) # 创建多维数组 >>>:arr = np.array([[1,2,5,8],[2,4,6,7]]) # dtype指定数组元素类型 >>>:arr3 = np.array([1,2,3,4,5,6], dtype='float') array([1., 2., 3., 4., 5., 6.])1.2 arange创建间隔数为1的范围数组。 np.arange(x) 指定右端点,左端点默认为0。 np.arange(x,y) 指定左右端点。 # 创建0~5,间隔为1的数组,右闭 >>>:np.arange(5) array([0, 1, 2, 3, 4]) # arange创建1~6,间隔为1的数组,右闭 >>>:np.arange(1,6) array([1, 2, 3, 4, 5])1.3 linspacenp.linspace(start,stop,num=50,endpoint=True, retstep=False,dtype=None,axis=0,) 创建间隔数不指定为1的范围数组。 num参数用来控制范围拆分的个数,从而控制间隔数。 endpoint用来指定区间右端点闭或开。 # linspace创建指定拆分个数的数组 >>>:np.linspace(1,10,num=10) array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) # linspace创建数组时,endpoint可以指定区间右闭或右开 >>>:np.linspace(1,10,num=9,endpoint=False) array([1., 2., 3., 4., 5., 6., 7., 8., 9.])1.4 zeroszeros(shape, dtype=float, order='C') 创建元素全部为0的数组。 sharp用来控制数组的维度和长度(行,列)。 >>>:np.zeros((2,5)) array([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]])1.5 onesnp.ones(shape, dtype=None, order='C') 创建元素全部为1的数组。 sharp用来控制数组的维度和长度(行,列)。 >>>:np.ones((5,3)) array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.], [1., 1., 1.], [1., 1., 1.]])1.6 emptyempty(shape, dtype=float, order='C') 创建一个随机元素数组。 sharp用来控制数组的维度和长度(行,列)。 >>>:np.empty((3,3)) array([[2.69329361e-312, 2.61054848e+106, 9.65232955e-312], [9.65232955e-312, 9.65232955e-312, 9.65232955e-312], [9.65232955e-312, 6.17188958e+303, 2.71615461e-312]])1.7 eyenp.eye(N, M=None, k=0, dtype=, order='C') 创建一个2维数组,对角线上为1,其他地方为0。 N:表示行数 M:表示列数,默认与行数一样 k:对角线索引。0(默认值)为主对角线,正值为上对角线,负值为下对角线。 >>>:np.eye(3,2) array([[1., 0.], [0., 1.], [0., 0.]]) >>>:np.eye(3,2,-1) array([[0., 0.], [1., 0.], [0., 1.]])2、ndarray对象的特点这也是它和Python【列表】的不同之处。 数组对象内的元素类型必须相同数组大小不可修改3、ndarray的常用属性属性 描述 T 数组的转置(对高维数组而言) dtype 数组元素的数据类型 size 数组元素的个数 ndim 数组的维数 shape 数组的维度大小(以元组形式)(行,列) reshape 重塑数组的形状(行,列) >>>:arr array([[1, 2, 5, 8], [2, 4, 6, 7]]) >>>:arr.T array([[1, 2], [2, 4], [5, 6], [8, 7]]) >>>:a1 array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) >>>:a1.shape (3, 5) arr6 = np.array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) >>>:arr6 array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) >>>:arr6.reshape(5,3) array([[1, 2, 3], [4, 5, 1], [2, 3, 4], [5, 1, 2], [3, 4, 5]])4、ndarray的数据类型dtype类型 描述 布尔型 bool_ 整型 int_ int8 int16 int32 int 64 无符号整型 uint8 uint16 uint32 uint64 浮点型 float_ float16 float32 float64 复数型 complex_ complex64 complex128 布尔型: 与Python不一样的是,bool_ 后面多了一个下划线_ 。 整型: int32只能表示(-2**31,2**31-1),因为它只有32个位,只能表示2**32个数。 无符号整型: 只能用来存正数,不能用来存负数。 补充: astype()方法可以强制转换数组的数据类型。 5、索引和切片5.1 一维数组5.1.1 索引索引和Python的列表用法一样。 >>>:arr1 = np.array([1,2,3,4]) >>>:arr1[0],arr1[1],arr1[2] (1, 2, 3)5.1.2 切片切片也和Python的列表用法一样。 >>>:arr1 array([1, 2, 3, 4]) >>>:arr1[1:2] array([2]) >>>:arr1[1:3] array([2, 3]) >>>:arr1[1:4] array([2, 3, 4])5.2 二维数组5.2.1 索引取元素要确定行和列的位置: 数组[行,列]/数组[(行,列)] >>>:arr2 = np.array([[1,2,3,4],[5,6,7,8]]) >>>:arr2 array([[1, 2, 3, 4], [5, 6, 7, 8]]) >>>:arr2[0,0],arr2[1,1] (1, 6) >>>:arr2[(0,0)] 15.2.2 切片>>>:arr3 array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29]]) >>>:arr3[1:3,1:3] array([[ 7, 8], [13, 14]]) >>>:arr3[2:5,1:4] array([[13, 14, 15], [19, 20, 21], [25, 26, 27]])5.3 布尔型索引将同样大小的布尔数组传进索引,会返回一个有True对应位置的元素的数组 >>>:arr3 array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29]]) >>>:>4 array([[False, False, False, False, False, True], [ True, True, True, True, True, True], [ True, True, True, True, True, True], [ True, True, True, True, True, True], [ True, True, True, True, True, True]]) >>>:arr3[arr3>5] array([ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,23, 24, 25, 26, 27, 28, 29]) >>>:arr3[arr3>>:n1 = np.array([1,2,3,4,5]) >>>:n1 array([1, 2, 3, 4, 5]) >>>:n1[[1,3]] array([2, 4])三、通用函数能对数组中所有元素同时进行运算的函数就是通用函数。 1、常用通用函数1.1 一元函数函数 功能 abs、fabs 分别是计算任意数和浮点数的绝对值 sqrt 计算各元素的平方根 square 计算各元素的平方 exp 计算各元素的指数e**x log 计算自然对数 sign 计算各元素的正负号 ceil 向上取整 floor 向下取整 rint 计算各元素的值四舍五入到最接近的整数,保留dtype modf 将数组的小数部分和整数部分以两个独立数组的形式返回,与Python的divmod方法类似 isnan 计算各元素的正负号 isinf 表示那些元素是无穷的布尔型数组 cos,sin,tan 普通型和双曲型三角函数 >>>:a = -4 >>>:np.abs(a) 4 >>>:b = -4.4423423 >>>:np.abs(b) 4.4423423 >>>:np.fabs(b) 4.4423423 >>>:np.fabs(a) 4.0 # 向上取整 >>>:np.ceil(b) -4.0 # 向下取整 >>>:np.floor(b) -5.0 # 四舍五入 >>>:arr4 = np.linspace(1,5,num=4) >>>:arr4 array([1. , 2.33333333, 3.66666667, 5. ]) >>>:np.rint(arr4) array([1., 2., 4., 5.]) # 拆分整数与小数 >>>:np.modf(4.5) (0.5, 4.0) >>>:np.isnan(3) False >>>:np.isnan(np.nan) True1.2 二元函数函数 功能 add 将数组中对应的元素相加 subtract 从第一个数组中减去第二个数组中的元素 multiply 数组元素相乘 divide、floor_divide 除法或向下圆整除法(舍弃余数) power 对第一个数组中的元素A,根据第二个数组中的相应元素B计算A**B maximum,fmax 计算最大值,fmax忽略NAN miximum,fmix 计算最小值,fmin忽略NAN mod 元素的求模计算(除法的余数) >>>:arr1 array([1, 2, 3, 4]) >>>:arr2 array([[1, 2, 3, 4], [5, 6, 7, 8]]) >>>:np.add(1,2) 3 >>>:np.subtract(arr2,arr1) array([[0, 0, 0, 0], [4, 4, 4, 4]])2、数学统计方法函数 功能 sum 求和 cumsum 求前缀和 mean 求平均数 std 求标准差 var 求方差 min 求最小值 max 求最大值 argmin 求最小值索引 argmax 求最大值索引 >>>:np.sum(arr1) 10 # 累加和 >>>:np.cumsum(arr2) array([ 1, 3, 6, 10, 15, 21, 28, 36], dtype=int32) >>>:arr5 = np.array([3,5,2,56,1,4,6]) >>>:arr5 array([ 3, 5, 2, 56, 1, 4, 6]) # 求最小值的索引 >>>:np.argmin(arr5) 43、随机数有关随机数的函数在np.random的子包当中。 常用随机函数: 函数 功能 rand 给定形状产生随机数组(0到1之间的数) randint 给定形状产生随机整数 chocie 给定形状产生随机选择 shuffle 与random.shuffle相同 uniform 给定形状产生随机数组 # 形状 >>>:np.random.rand(4,3) array([[0.21599854, 0.28993531, 0.31989618], [0.26206019, 0.69186237, 0.30819278], [0.21106428, 0.68874875, 0.58279413], [0.78623511, 0.80717789, 0.66939268]]) # 起始,终结,形状 >>>:np.random.randint(4,10,size=(2,3)) array([[9, 6, 8], [4, 7, 5]]) # 随机选择 >>>:np.random.choice(4,5) array([1, 3, 2, 0, 1]) >>>:np.random.choice([1,5,7,9],5) array([5, 9, 1, 7, 7]) # 打乱 >>>:arr7 = np.random.choice([1,2,3,4,5,7,9],5) >>>:arr7 array([2, 5, 4, 5, 3]) >>>:np.random.shuffle(arr7) >>>:arr7 array([5, 3, 4, 2, 5])
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |