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

Python中如何将(64,64)形状数组重构为(64,64,3)形状?

如何将(64,64)的NumPy数组扩展为(64,64,3)形状?

嗨,这里有几种实用的方法帮你实现需求,都是基于NumPy的(毕竟处理多维数组它最顺手):


方法1:使用np.repeat()(最直接的重复操作)

先给原数组添加一个新的单维度,然后在这个新维度上重复3次:

import numpy as np

# 示例数组,形状(64,64)
arr = np.random.rand(64, 64)
# 添加新维度并重复
result = np.repeat(arr[:, :, np.newaxis], repeats=3, axis=2)
print(result.shape)  # 输出: (64, 64, 3)

解释:arr[:, :, np.newaxis]把原数组从(64,64)变成(64,64,1),np.repeat在第2个轴(索引从0开始)重复3次,刚好把单维度扩展为3通道。


方法2:np.expand_dims() + np.tile()(平铺扩展)

先扩展维度,再用tile平铺这个单维度:

# 扩展维度到(64,64,1)
arr_expanded = np.expand_dims(arr, axis=2)
# 在第2轴平铺3次
result = np.tile(arr_expanded, reps=(1, 1, 3))
print(result.shape)  # 输出: (64, 64, 3)

tile的reps=(1,1,3)表示:第0轴、第1轴保持原长度不变,第2轴重复3次,和方法1效果一致。


方法3:使用np.stack()(直观堆叠)

把同一个数组连续堆叠3次在新维度上,非常直观:

result = np.stack([arr, arr, arr], axis=2)
print(result.shape)  # 输出: (64, 64, 3)

这种方法可读性很强,一眼就能看出来是把三个相同的数组在第2轴合并成3通道。


方法4:利用广播机制(简洁写法)

借助NumPy的广播特性,用一个长度为3的数组触发维度扩展:

result = arr[..., np.newaxis] * np.ones(3, dtype=arr.dtype)

这里arr[..., np.newaxis]同样是扩展到(64,64,1),然后和形状为(3,)的ones数组相乘时,广播会自动把单维度扩展到3,最终得到(64,64,3)的数组。

这些方法都能实现你的需求,效率上差别不大,选你觉得最易读的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:11