如何将shape为(1,3,300)的numpy三维数组转换为二维数组
简便实现numpy数组去掉长度为1的轴
嘿,这个需求确实很常见,而且有好几种超简便的方法可以快速实现,我给你整理了几个最常用的:
方法一:用
np.squeeze()(最贴合需求的专用方法)squeeze就是专门用来移除数组中所有长度为1的轴的函数,完全匹配你的场景。如果只想精准移除第一个轴,还可以指定axis参数避免意外:import numpy as np # 模拟你的原始数组 original_arr = np.random.rand(1, 3, 300) # 移除所有长度为1的轴 new_arr = original_arr.squeeze() # 或者精准移除第一个轴(更严谨) new_arr = original_arr.squeeze(axis=0) print(new_arr.shape) # 输出: (3, 300)方法二:直接索引切片(最直观的写法)
因为第一个轴的长度是1,直接取这个轴的第0个元素,就能得到后面的二维数组:new_arr = original_arr[0] print(new_arr.shape) # 输出: (3, 300)方法三:用
reshape()(最灵活的通用方法)
如果你明确知道目标形状,或者想让numpy自动推导维度,可以用reshape:# 直接指定目标形状 new_arr = original_arr.reshape(3, 300) # 用-1让numpy自动计算第二个维度(适合维度变化的场景) new_arr = original_arr.reshape(3, -1) print(new_arr.shape) # 输出: (3, 300)
这几种方法效率都很高,大部分情况下都是返回原数组的视图(不会额外占用大量内存),你可以根据自己的习惯选择~
内容的提问来源于stack exchange,提问作者Shew
相关产品推荐
相关产品推荐

