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

如何在Julia中用类map方法将RGB二维矩阵扩展为三维浮点数组

解决方法

你可以通过以下两种常用方式实现需求:

方法1:使用Images包内置工具(最便捷)

Images包提供的channelview可以直接提取颜色通道,再通过permutedims调整维度顺序即可匹配你需要的「行、列、通道」格式:

using Images

# 你的原有数组定义
white = RGB{Float32}(1, 1, 1)
green = RGB{Float32}(0.1, 1, 0.1)
blue = RGB{Float32}(0, 0.1, 1)
A = [white white; green blue; blue blue]

# 转换代码
channel_first = channelview(A) # 维度顺序为 [通道, 行, 列],尺寸为 (3, 3, 2)
B = permutedims(channel_first, (2, 3, 1)) # 调整为 [行, 列, 通道],尺寸为 (3, 2, 3)

# 验证结果
@assert eltype(B) == Float32
@assert size(B) == (3, 2, 3)

方法2:手动堆叠(不依赖内置图像处理函数)

你之前的写法只是生成了「元素为一维数组的二维矩阵」,没有把内部数组的维度合并到全局维度中,额外调用stack函数沿第三维堆叠即可:

# 基于你原有map写法补充堆叠操作
B = stack(map(a -> [a.r, a.g, a.b], A), dims=3)

# 同样可以得到尺寸为 (3,2,3)的Array{Float32, 3}数组
@assert size(B) == (3,2,3)

注:stack为Julia 1.7及以上版本的内置函数,低版本可以使用cat配合splat操作实现,写法为cat(map(a -> [a.r,a.g,a.b], A)..., dims=3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:05