numpy.squeeze函数详解:去除单维数组维度

七月
七月
发布时间:2026-10-14 | 4人浏览过
原创

本文介绍numpy.squeeze函数的作用与用法,该函数用于从数组形状中删除所有或指定的单维度条目。通过示例展示如何使用squeeze处理reshape后的多维数组,解决matplotlib绘图时的维度不匹配错误,并说明axis参数的具体应用。

reshape与squeeze的基本概念

reshape函数的主要功能是改变数组的维度结构,这里需要明确区分的是它调整的是维度的排列方式,而非数组元素的总大小。


>>> e= np.arange(10)
>>> e
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> e.reshape(1,1,10)
array([[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]])
>>> e.reshape(1,1,10)
array([[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]])
>>> e.reshape(1,10,1)
array([[[0],
    [1],
    [2],
    [3],
    [4],
    [5],
    [6],
    [7],
    [8],
    [9]]])

squeeze函数的作用是从数组的形状中移除所有单维度的条目,也就是将shape中值为1的那些维度去掉,从而简化数组结构。

squeeze函数参数详解

其标准调用格式为:numpy.squeeze(a, axis=None)。

参数说明如下:1)a代表输入的数组;2)axis用于指定需要删除的特定维度,但指定的维度必须已经是单维度(即大小为1),否则程序会报错;3)axis的取值可以是None、整数或整数元组,为可选参数。若axis设为None(默认值),则删除所有单维度的条目;4)函数返回值为处理后的数组;5)该操作不会修改原始数组,而是返回一个新数组。


>>> a = e.reshape(1,1,10)
>>> a
array([[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]])
>>> np.squeeze(a)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

squeeze在绘图中的应用

在实际应用中,squeeze常用于解决绘图时的维度兼容性问题。


>>> plt.plot(a)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "C:\Python27\lib\site-packages\matplotlib\pyplot.py", line 3240, in plot
  ret = ax.plot(*args, **kwargs)
 File "C:\Python27\lib\site-packages\matplotlib\__init__.py", line 1710, in inner
  return func(ax, *args, **kwargs)
 File "C:\Python27\lib\site-packages\matplotlib\axes\_axes.py", line 1437, in plot
  for line in self._get_lines(*args, **kwargs):
 File "C:\Python27\lib\site-packages\matplotlib\axes\_base.py", line 404, in _grab_next_args
  for seg in self._plot_args(this, kwargs):
 File "C:\Python27\lib\site-packages\matplotlib\axes\_base.py", line 384, in _plot_args
  x, y = self._xy_from_xy(x, y)
 File "C:\Python27\lib\site-packages\matplotlib\axes\_base.py", line 246, in _xy_from_xy
  "shapes {} and {}".format(x.shape, y.shape))
ValueError: x and y can be no greater than 2-D, but have shapes (1L,) and (1L, 1L, 10L)
>>> plt.plot(np.squeeze(a))
[<matplotlib.lines.Line2D object at 0x00000000146CD940>]
>>> plt.show()



>>> np.squeeze(a).shape
(10L,)

经过np.squeeze()函数转换后,原本多维的数组变成了秩为1的一维数组,例如形状显示为(10,)。

参考:http://blog.csdn.net/zenghaitao0128/article/details/78512715

到此这篇关于numpy的squeeze函数使用方法的文章就介绍到这了,更多相关numpy squeeze内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表