Numpy如何从仅含1行的2D数组中自动提取得到1D数组
Numpy维度自动处理方案
针对你的需求,有两种非常简便的实现方式,可根据实际场景选择:
场景1:仅需移除首维的长度为1的维度,其他维度保留
如果你的数组可能存在其他长度为1的维度,不想被误删,可以用一行判断实现,写法简洁无需额外封装:
processed_arr = arr[0] if arr.shape[0] == 1 else arr
场景2:确定数组仅首维可能为1,其他维度长度均大于1
直接使用Numpy内置的np.squeeze()函数即可,该函数会自动删除数组中所有长度为1的维度,完全匹配你的需求:
import numpy as np def get_array(): a = np.array([[0, 9, 5]]) return a # 单行2D数组测试 arr = get_array() processed_arr = np.squeeze(arr) print(processed_arr.shape) # 输出:(3,),已自动转为1D数组 # 多行2D数组测试 arr_multi = np.array([[1,2,3],[4,5,6]]) processed_multi = np.squeeze(arr_multi) print(processed_multi.shape) # 输出:(2, 3),原2D数组保持不变
注意:如果数组存在其他长度为1的维度(例如形状为(1, 3, 1)的三维数组),np.squeeze()会将所有长度为1的维度全部移除,得到形状为(3,)的数组,这种场景建议使用场景1的判断写法。
内容的提问来源于stack exchange,提问作者mauro
相关产品推荐
相关产品推荐

