Numpy squeeze()函数

语法numpy.squeeze(a,axis = None)

1)a 表示输入的数组;

2)axis 用于指定需要删除的维度,但是指定的维度必须为单维度,否则将会报错;

3)axis的取值可为None 或 int 或 tuple of ints, 可选。若axis为空,则删除所有单维度的条目;

4)返回值: 数组

5) 不会修改原数组;

作用:从数组的形状中删除单维度条目,即把shape中为1的维度去掉

场景:在机器学习和深度学习中,通常算法的结果是可以表示向量的数组(即包含两对或以上的方括号形式[[]]),如果直接利用这个数组进行画图可能显示界面为空(见后面的示例)。我们可以利用squeeze()函数将表示向量的数组转换为秩为1的数组,这样利用matplotlib库函数画图时,就可以正常的显示结果了。

示例

In [16]: import numpy as np

In [17]: a  = np.arange(10).reshape(1,10)

In [18]: a
Out[18]: array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

In [19]: a.shape
Out[19]: (1, 10)

In [20]: b = np.squeeze(a)^M
    ...: b
Out[20]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [21]: b.shape
Out[21]: (10,)
In [22]: c  = np.arange(10).reshape(2,5)^M
    ...: c
Out[22]:
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [23]: np.squeeze(c)
Out[23]:
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
In [24]: d  = np.arange(10).reshape(1,2,5)^M
    ...: d
Out[24]:
array([[[0, 1, 2, 3, 4],
        [5, 6, 7, 8, 9]]])

In [25]: d.shape
Out[25]: (1, 2, 5)

In [26]: np.squeeze(d)
Out[26]:
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [27]: np.squeeze(d).shape
Out[27]: (2, 5)

np.squeeze()函数可以删除数组形状中的单维度条目,即把shape中为1的维度去掉,但是对非单维的维度不起作用。

matplotlib画图示例

undefined

参考

squeeze()函数

Update time: 2020-05-25

results matching ""

    No results matching ""