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

如何使用另一Numpy矩阵对三维图像Numpy数组实现索引取值

可以实现,直接使用Numpy的高级整数索引即可满足需求,具体实现方式如下:

实现代码

import numpy as np

# 构造输入数组a(2*2*3的三维RGB数组)
a = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
# 构造索引矩阵b(每个位置存储目标像素的[行, 列]坐标)
b = np.array([[[1,0],[0,1]],[[1,1],[0,1]]])

# 按b的索引取值:拆分b的最后一维分别作为a的第0维、第1维索引
output = a[b[..., 0], b[..., 1]]
print(output)

运行后输出结果和要求的完全一致:

[[[ 7  8  9]
  [ 4  5  6]]

 [[10 11 12]
  [ 4  5  6]]]

原理解释

索引数组b的维度为2*2*2,每个坐标(i,j)位置存储的是要从a中取值的目标坐标[target_row, target_col]:

  • b[..., 0]提取所有位置的目标行索引,维度为2*2
  • b[..., 1]提取所有位置的目标列索引,维度为2*2
    Numpy进行高级索引时,会逐位置匹配两个索引数组的对应值,从a中取出对应坐标的RGB像素值,最终返回的结果维度为2*2*3,刚好符合输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:04