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

NumPy中如何将一个数组作为多维索引查询另一数组的值

NumPy 多维按行索引实现方法

你需要使用 NumPy 的高级索引机制,把索引数组G按列拆分,分别对应gamma的三个维度传入即可。

最简实现

直接按列切分G作为各维度的索引:

>>> gamma[G[:,0], G[:,1], G[:,2]]
array([16, 14])

通用写法(适配任意维度)

如果目标数组维度和G的列数一致,不需要手动逐列切片,直接转置G后转元组传入即可,适配高维场景:

>>> gamma[tuple(G.T)]
array([16, 14])

之前写法错误原因

  • 直接写gamma[G]时,NumPy 会把整个G作为*第一个维度(axis=0)*的索引数组,返回形状为(2, 3, 3, 3)的结果,和预期逻辑完全不符。
  • np.take(gamma, G)默认同样仅在第一个维度上取值,和gamma[G]逻辑一致,无法匹配多维度索引的需求。

逻辑验证

G是2行3列的数组,转置后得到3行2列的数组,每一行对应一个维度的索引序列:

>>> G.T
array([[1, 1],
       [2, 1],
       [0, 1]])

三个维度的索引按位置配对后就是(1,2,0)和(1,1,1),刚好对应你要取的gamma[1,2,0]=16、gamma[1,1,1]=14,结果完全匹配预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:39:43