python如何利用numpy.squeeze()函数降维单维度条目数组?
发布于 作者:苏南大叔 来源:程序如此灵动~

numpy
里面的squeeze()
函数是个用于降维的函数,它并不是对所有的ndarray
都可以生效,而是仅对其中有特定特征的数组生效。只可以对拥有单维度条目的数组起作用。那么,什么样的ndarray
是单维度的呢?np.squeeze()
的效果是如何的呢?这就是本文要讨论的内容。

苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的代码经验总结。本文测试环境:win10
,python@3.11.0
,numpy@1.24.2
。
单维度条目
啥样的是单维度条目呢?这个要从ndarray
的shape
说起。有两个判断标准
- 形状信息中,如果出现了
1
的字样,那么它就是本文的目标对象。 - 如果打印
ndarray
,出现了[[x]]
的类似信息,那么也很有可能是本文的目标对象。
可以生成这样的目标数组:
第一个变量s
的shape
信息里面,有1
的字样,所以是目标变量。
第二个变量x
的shape
信息里面,没有1
的字样,所以不是目标变量。
降维
降维,不是降一维,也不是降到一维。参考代码:
输出:
个别的ndarray
经过np.squeeze()
处理后,确实有多维变一维的效果。但是并不是全部。
下面的是个竖直的多维变一维的例子,但,这也不是全部。不能以偏概全。
下面的这个因为shape
里面没有1
,所以没有降维成功。
axis轴向
输出:
原版:
默认,降维所有轴向:
降维轴向为0:
降维轴向为2:
axis轴向为负数
个人理解,为负数就是从后面数数的意思。-1
意思就是最后一个,倒数第一个。
axis
还可以设置为一个tuple
,写上所有需要处理的轴向。
参考文章
- https://numpy.org/doc/stable/reference/generated/numpy.squeeze.html
- https://newsn.net/say/python-ndarray.html
- https://newsn.net/say/ndarray-expand_dims.html 【升维逻辑见这里】
结束语
这个np.squeeze()
主要用于在科学计算中,在画图之前整理数据。因为在科学计算中,经常会出现单维度的数据,这些信息在plot
画图中,是空白,无法画出来。


