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

如何将形状为(3,n,m)的3D numpy数组转换为(r,g,b)格式元组列表

解决方案

核心思路是先调整数组轴顺序,将RGB通道维度移到最后,再展平空间维度,最后逐行转换为元组即可得到目标结果。

分步实现代码

import numpy as np 
arr = np.array(
[[[0, 1],
  [2, 3]],
 [[4, 5],
  [6, 7]],
 [[8, 9],
  [10,11]]]
)

# 1. 调整轴顺序,从(通道, 行, 列)转为(行, 列, 通道)
transposed_arr = arr.transpose(1, 2, 0)
# 2. 展平行和列维度,得到形状为(n*m, 3)的二维数组
flattened_arr = transposed_arr.reshape(-1, 3)
# 3. 逐行转为元组,最终得到列表
result = [tuple(row) for row in flattened_arr]

print(result)

运行输出:

[(0, 4, 8), (1, 5, 9), (2, 6, 10), (3, 7, 11)]

简洁单行写法

result = list(map(tuple, arr.transpose(1, 2, 0).reshape(-1, 3)))

说明:默认reshape使用行优先(C风格)的顺序展开,刚好匹配示例的预期输出顺序,如果需要列优先展开,可以给reshape添加参数order='F'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:15:05