首页 > 编程语言 >Python中的索引和切片

Python中的索引和切片

时间:2024-10-18 16:13:52浏览次数:9  
标签:index width Python 切片 索引 数组 rot out

Python中的索引和切片是比较重要的内容,在数组处理中至关重要。这里对于2种情况做一个甄别。

索引

单元素索引

单元素索引的工作原理与其他标准 Python 序列完全相同。它是从0开始的,并接受负索引以从数组的末尾进行索引。

x = np.arange(10)
x[2]
2
x[-2]
8

无需将每个维度的索引分成自己的一组方括号。

x.shape = (2, 5)  # now x is 2-dimensional
x[1, 3]
8
x[1, -1]
9

如果用少于维度数量的索引对多维数组进行索引,则会得到一个子维度数组。例如

x[0]
array([0, 1, 2, 3, 4])

也就是说,每个指定的索引都会选择对应于所选其余维度的数组。在上面的示例中,选择 0 意味着长度为 5 的剩余维度未指定,并且返回的是具有该维度和大小的数组。必须注意,返回的数组是一个视图,即它不是原始数组的副本,而是指向与原始数组相同的内存位置。在这种情况下,将返回第一个位置(0)处的 1 维数组。因此,在返回的数组上使用单个索引会导致返回单个元素。也就是说

x[0][2]
2

因此请注意 x[0, 2] == x[0][2],尽管第二种情况效率较低,因为在第一次索引后会创建一个新的临时数组,随后由 2 进行再一次索引。

切片

关于切片的相关介绍可以参考切片和步幅

一个案例

def select(out, index):
    qual_out, rot_out, width_out = out
    batch_index = torch.arange(qual_out.shape[0]) # 这里需要单独提取对应的batch索引,不能直接切片使用的,索引和切片是有区别的!
    label = qual_out[batch_index, :, index[:, 0], index[:, 1], index[:, 2]].squeeze() # 利用点的位置提取对应TSDF位置的相应的指标
    rot = rot_out[batch_index, :, index[:, 0], index[:, 1], index[:, 2]]
    width = width_out[batch_index, :, index[:, 0], index[:, 1], index[:, 2]].squeeze()
    return label, rot, width
def select(out, index):
    qual_out, rot_out, width_out = out
    label = qual_out[: , :, index[:, 0], index[:, 1], index[:, 2]].squeeze() # 利用点的位置提取对应TSDF位置的相应的指标
    rot = rot_out[: , :, index[:, 0], index[:, 1], index[:, 2]]
    width = width_out[: , :, index[:, 0], index[:, 1], index[:, 2]].squeeze()
    return label, rot, width

上述2段代码输出结果是大不相同的,第一段代码利用batch_index 可以对每个样本中相应的位置(从index中对应的位置组合)进行组合索引,从而选出每个样本对应位置的label、rot、width;而第二段代码直接第一个维度获取所有样本,其他维度按照广播,一次性选取了多个label、rot、width维度信息,通过调试可以发现实际上shape是不同的。

参考文献

[1]在 ndarrays 上索引
[2]basics.indexing

标签:index,width,Python,切片,索引,数组,rot,out
From: https://www.cnblogs.com/fiveyang/p/18474494

相关文章

  • 最新毕设-SpringBoot-校园学习交流和资源共享平台-78210(免费领项目)可做计算机毕业设计
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1 数据流程2.2.2 用户登录流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 系统用例分析2.5本章小结3 系统......
  • 基于卷积神经网络的乳腺癌细胞识别系统,resnet50,mobilenet模型【pytorch框架+python源
     更多目标检测和图像分类识别项目可看我主页其他文章功能演示:卷积神经网络,乳腺癌细胞识别系统,resnet50,mobilenet【pytorch框架,python】_哔哩哔哩_bilibili(一)简介基于卷积神经网络的乳腺癌细胞识别系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的模......
  • 关于Python AI 编程助手Fitten Code的应用体验以及Python 修改删除 sys.path 路径以实
    一、关于PythonAI编程助手FittenCode的应用体验        AI现在无孔不入,现在都开始进入到编程中了,有一个能适用多种编译器环境的AI编程插件FittenCode。其适配了ViusalStudio,VSCode(本文使用),JetBrains系列(本文使用)以及Vim等多种编译器环境的插件FittenCo......
  • 数据预处理-DataFrame切片
    此Blog仅作为日常学习工作中记录使用,Blog中有不足之处欢迎指出以kaggle中房屋预测的训练集为例,说明DataFrame切片常用操作一、读入数据importnumpyasnpimportpandasaspdfile_path='***\kaggle_house_pred_train.csv'data=pd.read_csv(file_path)data.columns......
  • python+flask框架的购书推荐小程序(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,电子商务已成为人们日常生活的重要组成部分,其中在线购书因其便捷性和丰富的选择而备受欢迎。然而,面对海量的图书......
  • python+flask框架的公寓管理系统小程序小程序端28(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着城市化进程的加速,公寓租赁市场日益繁荣,传统的人工管理方式已难以满足高效、便捷的管理需求。关于公寓管理系统的研究,现有研究主要以大......
  • python+flask框架的公安管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景公安管理系统作为现代警务工作的重要组成部分,对于提升公安部门的工作效率、加强社会治安管理具有重要意义。目前,国内外关于公安管理系统的......
  • python+flask框架的弓蟹科信息系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景弓蟹科作为海洋生物多样性的重要组成部分,在生态学、生物分类学以及渔业资源管理中占据重要地位。现有研究主要集中在弓蟹科的分类学特征、......
  • Python爬虫API:获取商品详情数据的利器
    为什么选择Python爬虫API简洁的语法:Python的简洁语法使得编写爬虫代码变得简单,即使是初学者也能快速上手。强大的库支持:Python拥有丰富的库,如requests用于发送HTTP请求,BeautifulSoup和lxml用于解析HTML,pandas用于数据处理,这些库大大简化了爬虫的开发过程。跨平台兼容性:Python......
  • Python爬虫:自动化获取商品评论数据
    为什么选择Python爬虫API高效的数据处理:Python的数据处理能力,结合Pandas等库,可以轻松处理和分析大量的评论数据。丰富的库支持:Python拥有丰富的库,如requests用于发送HTTP请求,BeautifulSoup用于解析HTML,json用于处理JSON数据,这些库大大简化了爬虫的开发过程。灵活性:Python爬虫......