热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NumPy数组索引、维度增加、拼接

NumPy(NumericalPython)是Python中科学计算的核心库,支持大量的维度数组与矩阵运算,在数组处理上功能真的很强,在Python中调用numpy进行数组相关计算

NumPy(Numerical Python)是Python中科学计算的核心库,支持大量的维度数组与矩阵运算,在数组处理上功能真的很强,在Python中调用numpy进行数组相关计算就很方便。

 

看图像处理相关代码的时候常常会遇到一些numpy相关语法,简洁高效,看不懂就影响阅读的质量与速度,这篇文章帮助解决和记录常遇到的一些基于numpy的数组数据变换问题。

 

numpy中数组索引问题:

单维整数索引
>>> import numpy as np
>>>aaa = np.array(range(1,10))
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> aaa[1:5:2]
array([2, 4])
>>> aaa.reshape((3,-1))
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> aaa.reshape((3,-1))[0:2:2]
array([[1, 2, 3]])
#以整数作为索引,以[起始索引:终止索引:步长] 为格式索引,步长为1时可省略步长

单维数组索引
>>> aaa[[0]]
array([1])
>>> aaa[[0,2]]
array([1, 3])
>>> aaa.reshape((3,-1))
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> aaa.reshape((3,-1))[[0,2]]
array([[1, 2, 3],
       [7, 8, 9]])
>>>aaa.reshape((3,-1))[[0,0,1,2,2,0,1]]
array([[1, 2, 3],
       [1, 2, 3],
       [4, 5, 6],
       [7, 8, 9],
       [7, 8, 9],
       [1, 2, 3],
       [4, 5, 6]])
 # 已知数组a、b,使用a[b]进行索引,数组b中的值是a中元素所在的索引,b中元素个数可以超过a中元素个数。
 
 多维整数索引
>>> aaa.reshape((3,1,-1))
array([[[1, 2, 3]],
       [[4, 5, 6]],
       [[7, 8, 9]]])

>>> aaa.reshape((3,1,-1))[0,0]
array([1, 2, 3])
>>>aaa.reshape((3,1,-1))[2,0,0:2]
array([7, 8])
# 索引之间用冒号是在同一维度上取值,用逗号是在不同维度上取值

多维数组索引
>>> aaa.reshape((3,1,-1))
  array([[[1, 2, 3]],
       [[4, 5, 6]],
       [[7, 8, 9]]])
>>> aaa.reshape((3,1,-1))[[0,0,2],[0]]
array([[1, 2, 3],
       [1, 2, 3],
       [7, 8, 9]])
>>>aaa.reshape((3,1,-1))[[0,0,2],[0,0]]
IndexError: shape mismatch:
>>>aaa.reshape((3,1,-1))[[0,0,2],[0],[1]]
array([2, 2, 8])
>>>aaa.reshape((3,1,-1))[[0,0,2],[0],[1,0]]
IndexError: shape mismatch:
>>>aaa.reshape((3,1,-1))[[0,0,2],[0],[1,0,0]]
array([2, 1, 7])
>>>aaa.reshape((3,1,-1))[[0,0,2],[0],[1]]
array([2, 2, 8])

>>> aaa.reshape((3,1,-1))[[0,2]]
array([[[1, 2, 3]],
       [[7, 8, 9]]])
>>> aaa.reshape((3,1,-1))[[0,2],[0]]
array([[1, 2, 3],
       [7, 8, 9]])
>>> aaa.reshape((3,1,-1))[[0,2],[0,0]]
array([[1, 2, 3],
       [7, 8, 9]])
>>>aaa.reshape((3,1,-1))[[0,2],[0,0],[0]]
array([1, 7])
>>>aaa.reshape((3,1,-1))[[0,2],[0,0],[0,1]]
array([1, 8])
# 多个数组当索引,可以在第一个数组中以目标所在索引取出多个索引目标,之后的索引数组要在第一个数组取出的结果上操作 

总结如下表:

NumPy 数组索引、维度增加、拼接

 

numpy数组维度增加:

数组增加可以使用np.newaxis()函数 和 添加None方法

>>> import numpy as np
>>> aaa = np.array(range(1,10))
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>bbb = aaa[2, None]
>>>bbb
array([3])
>>>ccc = aaa[2,np.newaxis]
>>>ccc
array([3])

 

numpy数组拼接:

常用的还是np.concatenate()

接上一段变量使用

>>>np.concatenate((bbb,ccc),0)
array([3, 3])
>>>np.concatenate((bbb,ccc),1)
numpy.AxisError: axis 1 is out of bounds for array of dimension 1
>>>np.concatenate((bbb[...,None],ccc[...,None]),1)
array([[3, 3]])

 

以上。

 

 

欢迎关注公众号:

NumPy 数组索引、维度增加、拼接


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
author-avatar
用户gum5gltoo8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有