总结了 11 种 Numpy 的高级操作


总结了 11 种 Numpy 的高级操作

仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接

点击上方“小白学视觉”,选择加”星标”或“置顶”
重磅干货,第一时间送达
NumPy包含一个迭代器对象numpy.nditer。它是一个有效的多维迭代器对象,可以用于在数组上进行迭代。数组的每个元素可使用Python的标准Iterator接口来访问。
如果两个数组是可广播的,nditer组合对象能够同时迭代它们。假设数组a具有维度3X4,并且存在维度为1X4的另一个数组b,则使用以下类型的迭代器(数组b被广播到a的大小)。
函数在不改变数据的条件下修改形状,参数如下:
ndarray.reshape(arr,newshape,order)
函数返回数组上的一维迭代器,行为类似Python内建的迭代器。
函数返回折叠为一维的数组副本,函数接受下列参数:
ndarray.flatten(order)
其中:
order:‘C’—按行,‘F’—按列,‘A’—原顺序,‘k’—元素在内存中的出现顺序。
函数翻转给定数组的维度。如果可能的话它会返回一个视图。函数接受下列参数:
numpy.transpose(arr,axes)
其中:
arr:要转置的数组
axes:整数的列表,对应维度,通常所有维度都会翻转。
该函数属于ndarray类,行为类似于numpy.transpose.
函数交换数组的两个轴。这个函数接受下列参数:
numpy.swapaxes(arr,axis1,axis2)
其中:
arr:要交换其轴的输入数组
axis1:对应第一个轴的整数
axis2:对应第二个轴的整数
numpy.rollaxis()函数向后滚动特定的轴,直到一个特定位置。这个函数接受三个参数:
numpy.rollaxis(arr,axis,start)
其中:
arr:输入数组
axis:要向后滚动的轴,其它轴的相对位置不会改变
start:默认为零,表示完整的滚动。会滚动到特定位置。
函数将数组广播到新形状。它在原始数组上返回只读视图。它通常不连续。如果新形状不符合NumPy的广播规则,该函数可能会抛出ValueError。该函数接受以下参数:
numpy.broadcast_to(array,shape,subok)
函数通过在指定位置插入新的轴来扩展数组形状。该函数需要两个参数:
numpy.expand_dims(arr,axis)
其中:
arr:输入数组
axis:新轴插入的位置
函数从给定数组的形状中删除一维条目。此函数需要两个参数。
numpy.squeeze(arr,axis)
其中:
arr:输入数组
axis:整数或整数元组,用于选择形状中单一维度条目的子集
NumPy中数组的连接函数主要有如下四个:
concatenate沿着现存的轴连接数据序列
stack沿着新轴连接数组序列
hstack水平堆叠序列中的数组(列方向)
vstack竖直堆叠序列中的数组(行方向)
函数沿新轴连接数组序列,需要提供以下参数:
numpy.stack(arrays,axis)
其中:
arrays:相同形状的数组序列
axis:返回数组中的轴,输入数组沿着它来堆叠
是numpy.stack()函数的变体,通过堆叠来生成水平的单个数组。
是numpy.stack()函数的变体,通过堆叠来生成竖直的单个数组。
函数用于沿指定轴连接相同形状的两个或多个数组。该函数接受以下参数。
numpy.concatenate((a1,a2,…),axis)
其中:
a1,a2,…:相同类型的数组序列
axis:沿着它连接数组的轴,默认为0
NumPy中数组的数组分割函数主要如下:
split将一个数组分割为多个子数组
hsplit将一个数组水平分割为多个子数组(按列)
vsplit将一个数组竖直分割为多个子数组(按行)
该函数沿特定的轴将数组分割为子数组。函数接受三个参数:
numpy.split(ary,indices_or_sections,axis)
其中:
ary:被分割的输入数组
indices_or_sections:可以是整数,表明要从输入数组创建的,等大小的子数组的数量。如果此参数是一维数组,则其元素表明要创建新子数组的点。
axis:默认为0
split()函数的特例,其中轴为1表示水平分割。
split()函数的特例,其中轴为0表示竖直分割,无论输入数组的维度是什么。
NumPy中数组操作函数主要如下:
resize返回指定形状的新数组
append将值添加到数组末尾
insert沿指定轴将值插入到指定下标之前
delete返回删掉某个轴的子数组的新数组
unique寻找数组内的唯一元素
函数返回指定大小的新数组。如果新大小大于原始大小,则包含原始数组中的元素的重复副本。如果小于则去掉原始数组的部分数据。该函数接受以下参数:
numpy.resize(arr,shape)
其中:
arr:要修改大小的输入数组
shape:返回数组的新形状
函数在输入数组的末尾添加值。附加操作不是原地的,而是分配新的数组。此外,输入数组的维度必须匹配否则将生成ValueError。函数接受下列函数:
numpy.append(arr,values,axis)
其中:
arr:输入数组
values:要向arr添加的值,比如和arr形状相同(除了要添加的轴)
axis:沿着它完成操作的轴。如果没有提供,两个参数都会被展开。
函数在给定索引之前,沿给定轴在输入数组中插入值。如果值的类型转换为要插入,则它与输入数组不同。插入没有原地的,函数会返回一个新数组。此外,如果未提供轴,则输入数组会被展开。
insert()函数接受以下参数:
numpy.insert(arr,obj,values,axis)
其中:
arr:输入数组
obj:在其之前插入值的索引
values:要插入的值
axis:沿着它插入的轴
函数返回从输入数组中删除指定子数组的新数组。与insert()函数的情况一样,如果未提供轴参数,则输入数组将展开。该函数接受以下参数:
Numpy.delete(arr,obj,axis)
其中:
arr:输入数组
obj:可以被切片,整数或者整数数组,表明要从输入数组删除的子数组
axis:沿着它删除给定子数组的轴
函数返回输入数组中的去重元素数组。该函数能够返回一个元组,包含去重数组和相关索引的数组。索引的性质取决于函数调用中返回参数的类型。
numpy.unique(arr,return_index,return_inverse,return_counts)
其中:
•arr:输入数组,如果不是一维数组则会展开•return_index:如果为true,返回输入数组中的元素下标•return_inverse:如果为true,返回去重数组的下标,它可以用于重构输入数组•return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数
以下函数用于对dtype为numpy.string_或numpy.unicode_的数组执行向量化字符串操作。它们基于Python内置库中的标准字符串函数。字符数组类(numpy.char)中定义
NumPy包含大量的各种数学运算功能。NumPy提供标准的三角函数,算术运算的函数,复数处理函数等。
三角函数
舍入函数
算数函数
NumPy拥有标准的三角函数,它为弧度制单位的给定角度返回三角函数比值。arcsin,arccos,和arctan函数返回给定角度的sin,cos和tan的反三角函数。这些函数的结果可以通过numpy.degrees()函数通过将弧度制转换为角度制来验证。
numpy.around()这个函数返回四舍五入到所需精度的值
numpy.around(a,decimals)–a输入数组
decimals要舍入的小数位数。默认值为0。如果为负,整数将四舍五入到小数点左侧的位置
numpy.floor()函数返回不大于输入参数的最大整数。
numpy.ceil()函数返回输入值的上限,大于输入参数的最小整数
用于执行算术运算(如add(),subtract(),multiply()和divide())的输入数组必须具有相同的形状或符合数组广播规则。
numpy.reciprocal()函数返回参数逐元素的倒数。
numpy.power()函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。
numpy.mod()函数返回输入数组中相应元素的除法余数
NumPy有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等。
numpy.amin(),numpy.amax()从给定数组中的元素沿指定轴返回最小值和最大值。
numpy.ptp()函数返回沿轴的值的范围(最大值-最小值)。
numpy.percentile()表示小于这个值得观察值占某个百分比
numpy.percentile(a,q,axis)
a输入数组;
q要计算的百分位数,在0100之间;
axis沿着它计算百分位数的轴
numpy.median()返回数据样本的中位数。
numpy.mean()沿轴返回数组中元素的算术平均值。
numpy.average()返回由每个分量乘以反映其重要性的因子得到的加权平均值
NumPy中提供了各种排序相关功能。
numpy.sort()函数返回输入数组的排序副本。numpy.sort(a,axis,kind,order)
a要排序的数组;
axis沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序;
kind默认为’quicksort’(快速排序);
order如果数组包含字段,则是要排序的字段
numpy.argsort()函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。这个索引数组用于构造排序后的数组。
numpy.lexsort()函数使用键序列执行间接排序。键可以看作是电子表格中的一列。该函数返回一个索引数组,使用它可以获得排序数据。注意,最后一个键恰好是sort的主键。
numpy.argmax()和numpy.argmin()这两个函数分别沿给定轴返回最大和最小元素的索引。
numpy.nonzero()函数返回输入数组中非零元素的索引。
numpy.where()函数返回输入数组中满足给定条件的元素的索引。
numpy.extract()函数返回满足任何条件的元素。
ndarray对象可以保存到磁盘文件并从磁盘文件加载。可用的IO功能有:
numpy.save()文件将输入数组存储在具有npy扩展名的磁盘文件中。
numpy.load()从npy文件中重建数组。
numpy.savetxt()和numpy.loadtxt()函数以简单文本文件格式存储和获取数组数据。
来源:CSDN-逐梦er
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三+上海交大+视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解


文章作者: ZejunCao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZejunCao !
  目录