使用 python range 对象索引 numpy 数组

2024-01-07

我以前见过它一两次,但我似乎找不到任何关于它的官方文档:Using pythonrange对象作为 numpy 中的索引。

import numpy as np
a = np.arange(9).reshape(3,3)
a[range(3), range(2,-1,-1)]
# array([2, 4, 6])

让我们触发一个索引错误,只是为了确认范围不在合法索引方法的官方范围(双关语)中:

a['x']

# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

现在,numpy 及其文档之间的细微差异并非完全闻所未闻,也并不一定表明某个功能不是有意的(例如,参见here https://stackoverflow.com/a/48940730/7207392).

那么,有人知道为什么这有效吗?如果它是一个预期的功能,那么确切的语义是什么/它有什么好处?有没有任何 ND 概括?


只是总结一下(感谢评论中的@WarrenWeckesser):这种行为实际上已记录在案。人们只需认识到这一点range对象是Python序列严格意义上 https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range.

所以这只是一个花哨的索引的例子。但请注意,它的速度非常慢:

>>> a = np.arange(100000)
>>> timeit(lambda: a[range(100000)], number=1000)
12.969507368048653
>>> timeit(lambda: a[list(range(100000))], number=1000)
7.990526253008284
>>> timeit(lambda: a[np.arange(100000)], number=1000)
0.22483703796751797
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python range 对象索引 numpy 数组 的相关文章

随机推荐

  • jaxb 当 xsi:nil=true 如果任何子元素存在它仍然显示

    我有以下 xml 输出 当父元素具有属性 xsi nil true 即使子元素为 nillable true 时 我们如何隐藏子元素 endDate XML输出
  • REST API 中错误 HTTP 方法的返回代码?

    我们的API用户可以获得root发送文件 收集清单 GET请求根 API 地址 如果他发送POST 我们应该返回一些东西 同样的问题也适用于其他资源路径 例如发送PATCH在查询路径等上 并非所有方法在某些路径上都有意义 正如我从 HTTP
  • 使用插值在模板中渲染 html 字符串?

    使用角度 4 3 0 假设我有一个像这样的字符串 它是组件的属性 p test 2 bla bla p p test1234 56 p p test test p 所以 我按照文档进行操作 https angular io guide te
  • 有没有办法知道哪个编译器生成了静态库?

    第三方为我提供了一个静态库 a 用于在 Solaris 站上链接 我尝试使用 sunpro 进行编译 但在链接步骤失败 我想这个问题来自我使用的编译器 而不是 gcc 或者只是它的版本 因为编译器提供的 std lib 可能会从库预期的版本
  • opencv多通道元素访问

    我正在尝试学习如何使用 OpenCV 的新 C 界面 如何访问多通道矩阵的元素 例如 Mat myMat size 3 3 CV 32FC2 for int i 0 i lt 3 i for int j 0 j lt 3 j myMat a
  • 如何计算两个日期之间的年龄/年数[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 T SQL 中用年 月 日计算年龄 https stackoverflow com questions 57599 how to calculate age in t sql with yea
  • 如何在传单地图上添加搜索框

    我想使用传单地图作为页面的背景 并且这个页面有搜索功能 但是这个搜索框并不是用来搜索这张地图的 所以我的问题是如何在传单地图上添加搜索框 您还有其他解决方案使用地图作为背景吗 喜欢这个页面 http directory spatineo c
  • 使用 doLast 的 Gradle 执行任务失败

    仅当文件自上次构建以来已更新时 我才尝试运行执行任务 我最初的尝试是这样的 task generateLocalizedStrings type Exec ext srcFile file localization language fil
  • MVC 查看可为空的日期字段格式

    我试图在视图中显示以下内容 但出现问题 td item CreatedByDt ToString MM dd yyyy td 关于如何处理视图中可为空的日期字段的任何想法 顺便说一句 我正在使用 Razor 我收到以下错误 方法 ToStr
  • 减少 solr 结果输出中类似的顶部结果

    我在 solr 中进行了一次搜索 返回了大约 1500 个文档 这些文档基本上都是产品 例如 我的数据集中有一堆女鞋 我的数据集有各种各样的女鞋 但也有一些非常相似的结果 例如 11 号女式耐克运动鞋 10 号女式耐克运动鞋等 现在 当我搜
  • PDFBOX - 使用 easytable 的所有页面中的页眉

    我正在使用 pdfbox 和 easytablehttps github com vandeseer easytable https github com vandeseer easytable用于创建效果很好的动态页面 但我确实希望在所有
  • Matplotlib 多条动画多行

    我一直在研究如何为飞行路径制作多条线的动画 我读取多个 GPS 文件的对象是时间同步它们 它们相对于时间为每条路径设置动画 我找到了如何在动画函数中使用附加来为一行添加动画 现在我需要添加第二个和第三个 以便导入尽可能多的文件 我知道问题出
  • 无法在有关 iron lib 的 fn 项目中捕获动态环境

    我使用c c 驱动的cassandra来查询 然后返回数据 因此 cass LinkedList 和cass it Vec 都可以显示查询的结果 但是 我想使用json格式将结果显示到web上 所以我选择使用vec重新组装数据 然而 有一个
  • 使用并行 NetCDF 保存分布式 3D 复杂数组

    我有一个用 Fortran 编写的基于 MPI 的程序 它在每个节点 2D 时间序列的部分 生成复杂数据的 3D 数组 我想使用并行 I O 将这些数组写入单个文件 该文件可以相对轻松地在 python 中打开以进行进一步分析 可视化 理想
  • 如果我从服务层公开 IQueryable,那么当我需要从多个服务获取信息时,数据库调用不是会减少吗?

    如果我从服务层公开 IQueryable 那么当我需要从多个服务获取信息时 数据库调用不是会减少吗 例如 我想在一个页面上显示 2 个单独的列表 Posts and Users 我有两个单独的服务提供这些服务的列表 如果两者都提供 IQue
  • 在 Emacs 中编译程序?

    在 emacs 中编译程序的最佳方法是什么 我目前正在打开一个单独的缓冲区C x 3并在其中运行 eshell 使用M x eshell然后直接调用 make 或 clang 大多数时候我确实设置了 Makefile 使用运行编译过程有什么
  • Apache Tiles 替代品

    我正在编写一个 Spring MVC 应用程序 并寻找一种在视图中进行布局的方法 我看到的唯一选择是 Apache Tiles 我以前使用过它并且知道维护其配置是多么痛苦 有什么好的选择吗 我在看SiteMesh http www site
  • Gitlab CI 如何使用规则语法忽略目录?

    我能够使用以下语法忽略目录 文件更改 build script npm run build except changes md src ts 有了这个配置build作业将运行 除非 git 更改仅包含 md扩展文件或 ts文件在src目录
  • requiredFieldValidator 不适用于下拉列表

    我有一个Dropdownlist在我的网页中如下
  • 使用 python range 对象索引 numpy 数组

    我以前见过它一两次 但我似乎找不到任何关于它的官方文档 Using pythonrange对象作为 numpy 中的索引 import numpy as np a np arange 9 reshape 3 3 a range 3 rang