如何将存储72×72图像的(100,) numpy数组重塑为堆叠形式
嘿,这个需求我经常碰到,numpy里有好几种简单的方式能帮你把这个一维数组转成三维的堆叠数组,我给你分享几个最实用的方法:
方法1:用
numpy.stack()直接堆叠 这是最直观的方式,毕竟你本来就是要把一个个(72,72)的图像数组沿着第一个维度堆叠起来。直接调用stack函数就行,指定axis=0(这也是默认值,其实可以省略):
import numpy as np # 假设你的images是已存在的(100,)数组 stacked_images = np.stack(images, axis=0) print(stacked_images.shape) # 输出:(100, 72, 72)
这个方法不管原始数组的内存布局如何,都能可靠生成你想要的三维数组。
方法2:用
numpy.array()直接转换 因为你的images本身就是一个包含形状统一的numpy数组的一维数组,直接把它传给np.array()就能自动帮你转换成三维结构:
stacked_images = np.array(images) print(stacked_images.shape) # 同样输出:(100, 72, 72)
这个写法最简洁,适合这种所有元素形状完全一致的场景。
方法3:用
numpy.reshape()快速调整形状 如果你的原始数组在内存中是连续存储的,reshape会是最高效的方式——毕竟它只是调整了数组的“视图”,没有复制数据。只要总元素数匹配(1007272 = 100*(72*72)),就可以这么写:
stacked_images = images.reshape(100, 72, 72) print(stacked_images.shape) # 输出:(100, 72, 72)
不过要注意:如果原始数组的内存不是连续的,reshape会自动生成一个数据副本,结果依然正确,但效率会稍低一点。
小建议
如果不确定哪种方法更适合你的场景,优先选np.stack()或者np.array(),它们的兼容性更好,不容易踩内存布局的坑。
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

