为什么使用数组作为索引会改变多维 ndarray 的形状?

2024-02-26

我有一个 4-D NumPy 数组,轴为 x,y,z,t。我想获取对应于 t=0 的切片并排列 y 轴上的顺序。

我有以下内容

import numpy as np
a = np.arange(120).reshape(4,5,3,2)
b = a[:,[1,2,3,4,0],:,0]
b.shape

我得到 (5, 4, 3) 而不是 (4,5,3)。

相反,当我输入

aa = a[:,:,:,0]
bb = aa[:,[1,2,3,4,0],:]
bb.shape

我得到了预期的 (4,5,3)。有人可以解释为什么第一个版本交换前两个维度吗?


正如 @hpaulj 在评论中提到的,这种行为是因为混合基本切片and高级索引:

a = np.arange(120).reshape(4,5,3,2)
b = a[:,[1,2,3,4,0],:,0]

在上面的代码片段中,发生的情况如下:

  • 当我们沿着最后一个维度进行基本切片时,它会触发__getitem__称呼。那么,那个维度就消失了。 (即没有单一维度)
  • [1,2,3,4,0]从第二个维度返回 5 个切片。有两种可能将此形状放入返回的数组中:放在第一个位置或最后一个位置。 NumPy 决定将其放在第一维。这就是为什么你得到 5 (5, ...) 在返回的形状元组的第一个位置。如果我没记错的话,Jaime 在一次 PyCon 演讲中解释了这一点。

  • 沿着第一维和第三维,因为你使用切片一切:,沿这些尺寸的原始长度被保留。

将所有这些放在一起,NumPy 返回形状元组为:(5, 4, 3)

您可以在以下位置阅读更多相关信息:numpy-3d 数组中的索引歧义 https://stackoverflow.com/questions/48034413/numpy-indexing-ambiguity-in-3d-arrays and arrays.indexing#组合高级和基本索引 https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#combining-advanced-and-basic-indexing

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

为什么使用数组作为索引会改变多维 ndarray 的形状? 的相关文章

  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 如何在设计时制作支持拖放的自定义WPF ContentControl?

    我想创建内部有一个 子 控件的自定义 WPF 控件 子类化ContentControl or UserControl有效 但有一个缺陷 这些控件在设计器模式下不起作用 我所说的 不起作用 是指这种情况 假设我有一个Canvas里面有我的自定
  • 如何在 iPhone 中保存密码?

    我需要创建一个 iPhone 应用程序 它将与网站通信 所以它需要用户名和密码 现在我需要知道如何在 iphone 中保存用户名和密码 我已经使用过 NSuserdefaults 但这并没有解决我的 pblm 另外我需要恢复视图 从用户退出
  • 使用从情节提要中的通用类继承的类时,出现“界面生成器文件中的未知类”

    我最近重构了我的课程BookTableViewController来自简单的继承UITableViewController 这样它现在继承自泛型类FetchedResultsTableViewController
  • 在 Android 模拟器中以“飞行”模式进行测试

    我正在尝试在手机没有连接到互联网的情况下测试我的应用程序 在我的模拟器中 我在设置中打开了飞行模式 但是 我的应用程序似乎仍然能够与我的服务器通信 它正常工作 在我的设备上 相同的代码在没有数据连接的情况下引发错误 如何确保模拟器中没有互联
  • Route.php找不到我创建的控制器类

    我正在尝试构建一个 silex 应用程序 我的文件结构是 ROOT App Controller IndexController php Config dev php prod php route php vendor web index
  • Canvas 会减小 Jpeg 的图像大小,但为什么呢?

    当我使用以下命令将 JPEG 图像绘制到 Canvas 时drawImage 之后 使用canvas toDataURL 使其可保存在本地 用鼠标右键单击 则保存的 Jpeg Image 的文件大小会减少约 40 仅当使用 Jpeg 时才如
  • 如何处理复合微服务请求中的验证?

    考虑一个具有两个实体的应用程序 User 包含基本用户数据 例如姓名 Passport 包含身份验证凭据 即密码 以及两个内部微服务 UserService 负责创建和管理用户及其基础数据 AuthService 负责用户认证和密码处理 T
  • 跨类型构造函数编写通用仿函数实例?

    我正在学习基本类型课程并编写了自己的实现functor适合我的类型Test a 行为就像Maybe data Test a Test a Emp class FC c a where t a gt b gt c a gt c b insta
  • Git 交互式合并?

    我有两个分支具有完全相同的文件 如果您想知道它是一个 sql 文件 我想以交互方式合并它 我几乎想打开一个 diff 程序 就像出现冲突 或命令行 时所做的那样 并准确选择哪些行去哪里 有办法做到这一点吗 是的 但主要是通过手动实现 您将告
  • 使用 BouncyCastle 解密 Rijndael 256 块大小

    我们有一个用于加密的辅助类 老实说 它可能是几年前从 Stack Overflow 复制的 目前 我们正在尝试将部分代码移植到 NET Core 但我们发现它不起作用 因为 NET Core 实现RijndaelManaged不支持 256
  • Spring MVC 可以处理多值查询参数吗?

    有了这个http myserver find by phones phone 123 phone 345请求 是否可以处理这样的事情 Controller public class Controller RequestMapping fin
  • 为什么 ByRef 不能与 WithEvents 结合使用?

    我想我很清楚两者之间的区别ByVal and ByRef在 VB 中 但我的问题是当我尝试将它与声明为的成员结合使用时WithEvents 我有以下方法 Private Sub SafeCloseAndDeRefConnection ByR
  • 使用 torch.stack()

    t1 torch tensor 1 2 3 t2 torch tensor 4 5 6 t3 torch tensor 7 8 9 torch stack t1 t2 t3 dim 1 在实现 torch stack 时 我无法理解如何对不
  • Android Realm - 调试[重复]

    这个问题在这里已经有答案了 我想查看 Realm 对象变量的值 例如 Student int studentID ArrayList
  • 顶级异常应用程序:dexDebug --dex -no-optimize --output android studio

    我正在将 Android 代码从 Eclipse 迁移到 Android studio 但遇到了以下错误 该项目构建良好并与 gradle 同步 但在编译时抛出以下错误 UNEXPECTED TOP LEVEL EXCEPTION Erro
  • Web 请求中未设置 Referrer 标头

    当我通过 Phonegap 加载 Web 应用程序并发出 Web 请求 通过 AJAX 或其他方式 时 根本不会设置 REFERRER HTTP 标头 这会干扰某些第三方网站的功能 如何发送 REFERRER 标头 我使用的是Phonega
  • 如何从 Ruby 中的线程返回值?

    如果我有以下代码 threads 1 5 each do i threads lt lt Thread new process x i bin end threads each do t t join i d like to get the
  • 如何从 Firebase 获取某个字段为空的记录

    我正在构建一个应用程序 需要小批量处理 5k 任务 为此 我有一个存储在 Firebase 中的任务队列 我希望能够提取一定数量的空状态任务 更新其状态并写回 目前我不知道如何在某个字段为空的情况下提取数据 是否可以 如果不是 替代解决方案
  • 检索 SQL 表中的列数 - C#

    我对 C 很陌生 我正在尝试使用以下方法检索列数 SELECT count FROM sys columns 您能否解释一下如何使用该命令并将其放入变量中 要连接到数据库 您可以使用SqlConnection类 然后要检索行数 您可以使用E
  • 为什么使用数组作为索引会改变多维 ndarray 的形状?

    我有一个 4 D NumPy 数组 轴为 x y z t 我想获取对应于 t 0 的切片并排列 y 轴上的顺序 我有以下内容 import numpy as np a np arange 120 reshape 4 5 3 2 b a 1