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

如何将三个(128,128,1)的NumPy bool数组合并到(128,128,3)数组?

解决方案

嘿,这个问题其实挺容易解决的,咱们用NumPy的数组操作就能轻松把三个单通道数组合并到l1的对应通道里,保证顺序完全正确~

方法一:逐个通道直接赋值

这种方法直观易懂,直接针对l1的每个通道进行赋值操作,因为每个_l2数组的形状是(128,128,1),刚好和l1的单个通道切片形状匹配:

import numpy as np

# 假设你已经初始化好了这些数组
l1 = np.zeros((128, 128, 3), dtype=np.bool_)
first_l2 = np.random.randint(0, 2, (128, 128, 1), dtype=np.bool_)
second_l2 = np.random.randint(0, 2, (128, 128, 1), dtype=np.bool_)
third_l2 = np.random.randint(0, 2, (128, 128, 1), dtype=np.bool_)

# 按顺序给l1的三个通道赋值
l1[..., 0:1] = first_l2  # 给第0个通道赋值
l1[..., 1:2] = second_l2 # 给第1个通道赋值
l1[..., 2:3] = third_l2  # 给第2个通道赋值

这里的...是NumPy里的省略号索引,代表前面所有的维度(也就是128x128的空间维度),0:1这种切片写法能保证和_l2数组的(128,128,1)形状完全匹配,避免维度不兼容的问题。你也可以简化成l1[..., 0] = first_l2[..., 0],效果是一样的——因为NumPy会自动进行维度广播。

方法二:一次性拼接后赋值

如果你想更简洁地完成操作,可以用np.concatenate把三个单通道数组在**通道维度(axis=2)**上拼接成一个(128,128,3)的数组,再直接赋值给l1:

# 在通道维度(第三个维度)拼接三个数组
combined_array = np.concatenate([first_l2, second_l2, third_l2], axis=2)
# 将拼接好的数组赋值给l1
l1[:] = combined_array

这种方法一步到位,能严格保证三个数组的顺序和l1的通道顺序完全对应:first_l2对应l1的第0通道,second_l2对应第1通道,third_l2对应第2通道。

两种方法都能完美实现你的需求,选哪种全看你的习惯~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:59:19