numpy数组中一些常见的操作以及用法举例 admin 2023-02-10 13:36:02 篇首语:本文由小编为大家整理,主要介绍了numpy数组中一些常见的操作以及用法举例相关的知识,希望对你有一定的参考价值。 文章目录 1. 数组与标量的计算2. 两个数组之间的数学计算3. 数组一元函数的数学操作4. 数组二元函数的数学操作5. 数组的常用属性6. 数组的常用方法7. 随机操作8. 拼接数组9. 切分数组10. 插入和删除11. 数组扩展 这篇文章是为了解读一些常用的numpy数组操作,同时也是为了加深自己对numpy的理解。如果后续碰到比较实用的操作,也会同步至这篇文章。 不得不说,numpy的操作实在是太多了,好的方法是边学边用,随时用随时查。如果想要全面学习,或者只是想查询某个函数的功能,可以访问官网,官网有一个非常全面的教程方法,是一个学习numpy的绝佳去处。 1. 数组与标量的计算 运算符操作含义a+1a的所有元素加1a - 1a的所有元素减1a*3a的所有元素乘以31/a1除以所有a中的元素1//a1除以所有a中的元素,并取整a**0.5a的所有元素取0.5次方代码举例: import numpy as npa = np.array([1,2,3,4]).reshape(2,2)print(a+2) #加法"""[[3 4] [5 6]]"""print(a*3) #乘法"""[[ 3 6] [ 9 12]]"""print(1//a) #整除"""[[1 0] [0 0]]"""print(a**0.5) #开根号"""[[1. 1.41421356] [1.73205081 2. ]]""" 2. 两个数组之间的数学计算 运算符操作含义a+ba,b对应元素相加a-ba,b对应元素相减a*ba,b对应元素相乘a/ba,b对应元素相除a//ba,b对应元素相整除np.multiply(a, b)点乘,同*号np.dot(a,b)内积np.matmul叉乘代码举例: import numpy as npa = np.array([1.2,2.6,-3.9,4.5]).reshape(2,2)b = np.array([-2.6,3.6,2.8,13.6]).reshape(2,2)print(a*b)"""[[ -3.12 9.36] [-10.92 61.2 ]]"""print(a//b)"""[[-1. 0.] [-2. 0.]]""" 3. 数组一元函数的数学操作 函数含义numpy.sqrt(array)平方根函数numpy.exp(array)e^array[i]的数组numpy.abs/fabs(array)计算绝对值numpy.square(array)计算各元素的平方,等于array**2numpy.log/log10/log2(array)计算各元素的各种对数numpy.sign(array)计算各元素正负号numpy.isnan(array)NaN(not a number):不等于任何浮点数numpy.isinf(array)inf:比任何浮点数都大numpy.cos/cosh/sin/sinh/tan/tanh(array)三角函数numpy.modf(array)将array中值得整数和小数分离,作两个数组返回numpy.ceil(array)向上取整,也就是取比这个数大的整数numpy.floor(array)向下取整,也就是取比这个数小的整数numpy.rint(array)四舍五入numpy.trunc(array)向0取整numpy.cos(array)正弦值numpy.sin(array)余弦值numpy.tan(array)正切值numpy.sum(array)求和numpy.cumsum(array)求前缀和numpy.mean(array)求平均数numpy.std(array)求标准差numpy.var(array)求方差numpy.min(array)求最小值numpy.max(array)求最大值numpy.argmin(array)求最小值索引numpy.argmax(array)求最大值索引numpy.media(array)奇数取中间数,偶数个则取中间两个数的平均值代码举例: import numpy as npa = np.array([1.2,2.6,-3.9,4.5]).reshape(2,2)print(np.rint(a)) #四舍五入"""[[ 1. 3.] [-4. 4.]]"""print(np.abs(a)) #绝对值"""[[1.2 2.6] [3.9 4.5]]"""print(np.sin(a)) #sin值"""[[ 0.93203909 0.51550137] [ 0.68776616 -0.97753012]]"""print(np.sum(a)) #求和4.4print(np.cumsum(a)) # 当前数与之前的所有数之和:[ 1.2 3.8 -0.1 4.4]print(np.argmin(a)) #最小值索引:2 4. 数组二元函数的数学操作 函数含义numpy.add(array1,array2)元素级加法numpy.subtract(array1,array2)元素级减法numpy.multiply(array1,array2)元素级乘法numpy.pide(array1,array2)元素级除法 array1./array2numpy.power(array1,array2)元素级指数 array1.^array2numpy.maximum/minimum(array1,aray2)元素级最大值numpy.fmax/fmin(array1,array2)元素级最大值,忽略NaNnumpy.mod(array1,array2)元素级求模numpy.copysign(array1,array2)将第二个数组中值得符号复制给第一个数组中值numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2)元素级比较运算,产生布尔数组numpy.logical_end/logical_or/logic_xor(array1,array2)元素级的真值逻辑运算代码举例: import numpy as npa = np.array([1.2,2.6,-3.9,4.5]).reshape(2,2)b = np.array([-2.6,3.6,2.8,13.6]).reshape(2,2)print(np.add(a,b)) #元素的加法"""[[-1.4 6.2] [-1.1 18.1]]"""print(np.multiply(a,b)) #元素乘法"""[[ -3.12 9.36] [-10.92 61.2 ]]"""print(np.maximum(a,b)) #a,b之间的最大元素"""[[ 1.2 3.6] [ 2.8 13.6]]"""print(np.copysign(a,b))#将b的符号给a"""[[-1.2 2.6] [ 3.9 4.5]]""" 5. 数组的常用属性 属性含义dtype数组元素的数据类型size数组元素的个数ndim数组的维数shape数组的维度大小(以元组形式)T数组的转置代码举例: import numpy as npa = np.array([1,2,3,4]).reshape(2,2)print(a.dtype) #类型:int64print(a.ndim)#维度:2print(a.shape)#数组大小(2,2)print(a.size)#数组元素个数:4print(a.T) #转置"""[[1 3] [2 4]]""" 6. 数组的常用方法 注意这里是方法,而不是函数。 方法含义reshape不改变数据的条件下修改形状flat不是方法,它是数组元素迭代器flatten返回一份数组拷贝,对拷贝所做的修改不会影响原始数组ravel返回展开数组其中flatten和ravel都可以选定展开的顺序:order:"C’ – 按行,"F’ – 按列,"A’ – 原顺序,"k’ – 元素在内存中的出现顺序。 import numpy as npa = np.arange(4).reshape(2, 2)for element in a.flat: print(element,end=", ") # 0, 1, 2, 3,print("\n")print (a.flatten()) #[0 1 2 3]print (a.ravel(order = "F")) #[0 2 1 3] 7. 随机操作 numpy.random 模块对 Python 内置的 random 进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数,如正态分布、泊松分布等。由于暂时还没有涉及到使用正态分布等内容的应用,所以这部分只是介绍一些简单实用的随机操作。 操作意义random.rand()根据给定维度生成[0,1)之间的数据random.randn()根据给定维度(不给维度时为单个数),产生符合标准正态分布的随机数random.normal()可定义均值和标准差的正态分布的随机数random.randint()返回给定维度的随机整数random.random()、random.random_sample()返回给定维度的[0,1)之间的随机数random.choice()从给定的一维数组中生成随机数代码举例: import numpy as npprint(np.random.rand(3, 3)) #3 * 3维度的[0,1)的随机数print(np.random.random((3, 3))) #3 * 3维度的[0,1)的随机数print(np.random.randint(0, 2, size=(3, 3))) #3*3维度的[0,2]的随机整数print(np.random.choice(["a", "b", "c"], p=[0.5, 0.3, 0.2])) #p的概率值和必须为1 8. 拼接数组 import numpy as npa = np.arange(4).reshape(2,2)b = np.array([[5,6],[7,8]])c = np.concatenate((a,b),axis=1)#指定axis=1拼接,默认是axis=0拼接"""[[0 1 5 6] [2 3 7 8]]"""c = np.concatenate((a,b))#默认axis=0"""[[0 1] [2 3] [5 6] [7 8]]"""c=np.hstack([a,b])#横向拼接"""[[0 1 5 6] [2 3 7 8]]"""c=np.vstack([a,b])#纵向拼接"""[[0 1] [2 3] [5 6] [7 8]]"""b = np.array([[1,1],[1,1]])c = np.append(b,a)#没有指定axis,则默认展成一维,如果有axis则如下所示。"""[1 1 1 1 0 1 2 3 4 5 6 7]""" append设置了axis的情况。 import numpy as npa=[1,2,3]b=[4,5]c=[[6,7],[8,9]]d=[[10,11],[12,13]]print("在一维数组a后添加values,结果如下:0".format(np.append(a,b,axis=0)))print("沿二维数组c的行方向添加values结果如下:0".format(np.append(c,d,axis=0)))print("沿二维数组c的列方向添加values结果如下:0".format(np.append(c,d,axis=1)))#print("使用了axis,若arr和values的形状不同,则报错:".format(np.append(a,c,axis=0))) 输出: 在一维数组a后添加values,结果如下:[1 2 3 4 5]沿二维数组c的行方向添加values结果如下:[[ 6 7] [ 8 9] [10 11] [12 13]]沿二维数组c的列方向添加values结果如下:[[ 6 7 10 11] [ 8 9 12 13]] 9. 切分数组 import numpy as npa = np.arange(9)print(np.split(a,[3,6]))#按照指定切分点对原数组进行切分"""[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]""" 10. 插入和删除 import numpy as npa = np.arange(8).reshape(2,4)c = np.delete(a,[0,2],axis=1)#axis = 1上进行删除,0,2列"""[[1 3] [5 7]]"""c = np.insert(a,1,5,axis=1)#axis=1上进行插入指定数值,第1列插入数字5"""[[0 5 1 2 3] [4 5 5 6 7]]""" 11. 数组扩展 numpy提供了tile函数和repeat方法,可以很轻松的将数组进行扩展。 import numpy as npa = np.array([1,2,3])print(np.tile(a,[3,1])) #复制成3行1列"""[[1 2 3] [1 2 3] [1 2 3]]"""print(a.repeat(3,axis=0))#在axis=0上面复制3行"""[1 1 1 2 2 2 3 3 3]"""a=np.array([[1,2,3]])print(np.tile(a,[3,1])) #复制成3行1列"""[[1 2 3] [1 2 3] [1 2 3]]"""print(a.repeat(3,axis=0))#在axis=0上面复制3行"""[[1 2 3] [1 2 3] [1 2 3]]""" 以上是关于numpy数组中一些常见的操作以及用法举例的主要内容,如果未能解决你的问题,请参考以下文章 layer弹出框中icon数字参数说明 Web 3D智能数字机房,HTML5+WebGL(ThreeJS)匠心打造 您可能还会对下面的文章感兴趣: 相关文章 浏览器打不开网址提示“ERR_CONNECTION_TIMED_OUT”错误代码的解决方法 如何安装ocx控件 VMware的虚拟机为啥ip地址老是自动变化 vbyone和EDP区别 linux/debian到底怎么重启和关机 苹果平板键盘被弄到上方去了,如何调回正常? 机器学习常用距离度量 如何查看kindle型号