You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以最简方式实现三维数组按二维索引数组取值?及对应索引指南章节

解决方案

最简实现方式

在Python的NumPy库中,可通过整数数组索引快速实现需求:

import numpy as np

# 示例初始化(替换为你的实际数组即可)
M, N, K = 3, 4, 5
a = np.random.rand(M, N, K)
b = np.random.randint(0, K, size=(M, N))

# 生成行列索引矩阵,配合b完成元素提取
rows, cols = np.indices(b.shape)
c = a[rows, cols, b]

如果追求极致简洁,也可以写成一行:

c = a[tuple(np.indices(b.shape)) + (b,)]

验证:最终c的每个元素c[i,j]都严格等于a[i,j,b[i,j]],完全符合要求。

对应索引指南的部分

该操作属于NumPy索引体系中的整数数组索引(归属于高级索引范畴)。这类索引允许用数组作为索引参数,按元素级别的对应关系从原数组中选取元素,恰好适配此处"每个(i,j)位置对应第三个维度的b[i,j]索引"的场景。


内容的提问来源于stack exchange,提问作者Kuraga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 04:27:13