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

如何对shape为(50,100,100)的NumPy数组展平最后两个维度?

NumPy数组展平最后两个维度的高效方案

针对形状为(50, 100, 100)的NumPy数组,要将最后两个维度展平为(50, 10000),最简洁高效的方案是用NumPy原生方法,完全不需要依赖列表生成器(后者会引入Python循环开销,效率更低)。

推荐方法:reshape

reshape是最优选择,它可以在不复制数据的情况下返回数组视图(如果原数组内存布局连续),性能拉满,写法也极简:

import numpy as np

# 示例数组
arr = np.random.rand(50, 100, 100)
# 展平最后两个维度,-1让NumPy自动计算维度大小
flattened_arr = arr.reshape(arr.shape[0], -1)

也可以直接写死目标形状:arr.reshape(50, 10000),但用-1更灵活——哪怕后续前两个维度的数值变化,代码也不用修改。

备选方法:ravel

如果需要先展平整个数组再重新塑形,ravel也是高效选项(默认返回视图):

flattened_arr = arr.ravel().reshape(50, -1)

不过这个写法比直接用reshape多一步,优先级稍低。

为什么不用列表生成器?

比如np.array([x.flatten() for x in arr])这种写法,会在Python层面循环遍历每个子数组,不仅代码冗余,还会因为Python循环的开销导致运行速度远慢于NumPy原生的C实现方法,完全没必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:12:01