Numpy 索引重新排序数组

2024-03-28

我刚刚偶然发现了一个我不太理解的 numpy 索引行为。看起来 numpy 正在根据索引模式改变我的轴的顺序。不幸的是,我在文档中找不到以下内容的解释。有人可以向我解释一下发生了什么事吗?

# This is expected: dimension 1 is reduced to length 1:
print np.ndarray(shape=(3,3,3,3))[:, [0], :, :].shape
>>> (3, 1, 3, 3)

# This is the unexpected behavior:
print np.ndarray(shape=(3,3,3,3))[:, [0], :, 0].shape
>>> (1, 3, 3)

我预计第二个命令会产生 (3, 1, 3)。如果我从第四个维度中选择一个元素,为什么前两个维度的形状会发生变化? 预先非常感谢!

编辑: 我在 numpy 1.11.0 和 python 2.7.11 上看到这个


这是预期的行为... NumPy 以不同的方式对待用切片索引的轴和用数组索引的轴。默认行为是,生成的形状将具有使用数组索引的轴的生成形状,然后是使用切片索引的轴的生成形状。这意味着奇怪的是第一种情况,应该是(1, 3, 3, 3)。但有人认为这会让用户对一些简单的情况感到困惑,比如你的,所以当用数组索引的所有轴分组在一起时,生成的形状被放置在输出形状的位置,其中数组索引轴的簇位于原始数组。

你可以自己测试一下:

>>> print np.ndarray(shape=(3,3,3,3))[:, [0], [0], :].shape
(3, 1, 3)

正如您所经历的,这种聪明可能比一贯的行为更令人困惑。 NumPy 开发人员的共识是,最好不要以不同的方式对待聚集数组索引轴,甚至有实现索引器属性的 PR https://github.com/numpy/numpy/pull/6075这将使索引更加明智。

为了向后兼容,默认索引不太可能很快改变,尽管它可能会在不久的将来开始针对某些情况发出弃用警告。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy 索引重新排序数组 的相关文章

随机推荐

  • 如何为 Angular Material 扩展面板中的图标设置动画?

    我正在尝试为扩展面板标题内的图标设置动画 我的HTML
  • 获取三个数组的所有可能组合,不重复

    我有三个动态填充的数组 可能只有一两个数组有数据 array1 array 0 gt 100GB 1 gt 500GB array2 array 0 gt black 1 gt yellow 2 gt green array1 array
  • 将前导零添加到 varchar 字段[重复]

    这个问题在这里已经有答案了 我有一个领域是varchar 8 保存我转换而来的日期值float to varchar 有些记录有八个字符 有些记录有七个字符 我想通过在有 7 的部分添加前导零来使它们的长度相同 8 个字符示例 121620
  • 拒绝时重定向 |访问

    如果用户的 IP 与 IP 地址的拒绝相匹配 例如
  • 异步nodejs查询和处理结果

    我有一个从 mongodb 获取的对象数组 数组中的每个元素都是一篇文章 作者为 user id 现在我希望找到与 user id 相关的用户信息 由于节点使用异步方法从数据库查找数据 因此 forEach 循环在回调完成之前完成 docs
  • 使用邮件规则和 Applescript 将 vcard 添加到联系人

    我通过特定的电子邮件地址收到了很多客户电子名片 我想通过邮件规则和 AppleScript 自动将电子名片添加到我的联系人中 我搜索了很多并找到了一些东西 我稍微修改了一下 并且打开和添加过程运行良好 但只有当我选择一个文件时 我无法将文件
  • 防止 DOMDocument::loadHTML() 转换实体

    我有一个字符串值 我正在尝试为其提取列表项 我想提取文本和任何子节点 但是 DOMDocument 正在将实体转换为字符 而不是保留原始状态 我尝试将 DOMDocument resolveExternals 和 DOMDocument s
  • opencv中的骨架化

    opencv中有没有可以使用的特定函数来进行骨架化 另外 我搜索了一段时间 想知道opencv是否实现了voronoi 骨骼 似乎有 但真的是 看起来 Voronoi Skeleton 是在 cvConstructSkeleton and
  • HTML5网络存储:不同网站可以互相覆盖用户计算机上的数据吗?

    我有一些关于 HTML5 存储概念的问题 我浏览了 w3c 规范 书籍和教程 但我仍然对某些概念有点不清楚 假设我访问网站 A 一些 JavaScript 在我的浏览器中运行 用于设置键值对 例如 username deepak 然后我访问
  • 从选择标签中的数据库获取值 HTML PHP MySQL [重复]

    这个问题在这里已经有答案了 我是 PHP MySQL 的初学者 我成功地从数据库中获取了值INPUT类型 但我无法从数据库中获取数据SELECT type 这是我的示例编辑表单 其中Gender 用户类型无法从我的数据库输出值 and he
  • 如何将雪花中单词的第一个字母大写?

    我需要在 Snowflake 中将 mySQL 查询中某些单词的首字母大写 我目前正在使用这个功能 SELECT case when FLAG1 is null then upper FLAG2 else FLAG1 END as STAT
  • 为什么新的 gradle 测试过滤功能不适用于我的构建脚本?

    我正在开发一个具有以下结构的 项目 proj dbfit junit module db1 db2 提供一些背景信息 所有这些 模块 db1 db2 都有 JUnit 测试 这些测试使用 FitNesseRunner 将它们集成到 Bamb
  • 某些图像无法在 IE7 或 IE8 中显示

    我不明白为什么这个图像 以及其他类似的图像 不会在 IE7 或 IE8 中显示 它在 IE9 Chrome Safari Firefox Mac 或 PC 以及这些浏览器的多个版本中完美显示 http images appletree co
  • Google Cloud CDN 开始忽略存储桶的查询字符串

    几个月前 为存储桶激活了 Cloud CDN 我们的存储数据会通过后端定期更改 因此 为了使缓存版本无效 我们添加了一个查询参数changedDate到提供给客户端的 url 当时这很有效 在过去几个月 可能是几周 的某个时候 谷歌似乎改变
  • 如何在 Python 中使用日期时间和 scipy 峰值绘制绘图?

    我从一个问题中举了一个例子 并将其适应我的数据集 但当涉及到绘制绘图时 我陷入了困境 我知道如何制作日期时间 值图 但我不知道如何进行组合 我得到的答复如下 Response https datascience stackexchange
  • 部署套件建议[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 Net 4 0 下编写了一些应
  • iOS 8 代码适用于 iPhone 5s,但不适用于 iPhone 5

    在 iPhone 5s 模拟器上一直测试我的 spritekit 游戏后 我终于尝试在 iPhone 5 模拟器上运行它 不幸的是 当我第一次触摸时 我就收到了一个我不明白的错误 我的touchesBegan函数调用我的addCoin函数
  • React router dom将数据从父组件传递到子路由器组件不传递props.match

    父组件App js的内容 import React useEffect useState from react import NavBar from components NavBar import Signup from pages Si
  • 如何使 formControl 只读

    如何以角度只读方式制作表单控件 我知道我可以用 html 来做
  • Numpy 索引重新排序数组

    我刚刚偶然发现了一个我不太理解的 numpy 索引行为 看起来 numpy 正在根据索引模式改变我的轴的顺序 不幸的是 我在文档中找不到以下内容的解释 有人可以向我解释一下发生了什么事吗 This is expected dimension