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

Python NumPy多维数组按索引取值结果不符预期如何解决

NumPy 高级索引提取元素维度异常修复

问题原因

你当前的写法A[0,i]仅指定了数组A第0轴的索引,NumPy会将索引数组i的所有值作为第1轴的行索引,默认提取对应行的全部列元素,因此返回结果多了一整维的行内容,最终输出维度为(1,3,2,3),和预期不符。
另外你对索引数组i的维度描述有误,实际定义的i维度为(1,3,2),其中每一组长度为2的数组存储的是目标元素的行坐标、列坐标对,分别对应A[0]这个3×3矩阵的第1轴、第2轴位置。你需要提取的三个目标元素坐标分别是:

  • (0,0) → 值1
  • (1,2) → 值6
  • (2,2) → 值9

修正代码

需要将索引数组拆分为独立的行索引、列索引,同时传入两个轴的索引做高级索引,最后补充长度为1的尾维度匹配预期输出格式:

import numpy as np
i = np.array([[[0,0],[1,2],[2,2]]])
A = np.array([[[1,2,3],[4,5,6],[7,8,9]]], dtype=float)

# 拆分坐标对为行索引、列索引
row_idx = i[..., 0]
col_idx = i[..., 1]
# 双轴高级索引取对应元素,新增尾维度匹配输出结构
I = A[0, row_idx, col_idx][..., np.newaxis]
print([I])

运行结果

执行代码后将输出你预期的结果:

[array([[[1.],
        [6.],
        [9.]]])]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:09:19