美文网首页
Python:reshape和resize的区别!

Python:reshape和resize的区别!

作者: 胜负55开 | 来源:发表于2020-05-18 12:08 被阅读0次

    不管是tensorflow还是numpy中,都出现了这两个单词!使用上看起来都是改变原始数组/张量的形状,但其内涵是完全不一样的!

    总结在先:

    • reshape:逻辑上改变矩阵形状,但不会增减任何数据!即:(a,b) → (c,d):ab = cd
    • resize:改变矩阵的大小,可以增减数据!即:(a,b) → (c,d):ab ≠ cd

    用Numpy来展示:

    import numpy as np 
    
    # 原始数据:
    a = np.array( [[2,3,4,8], [13, 12, 17, 19], [33, 28, 63, 41]] )
    a
    
    array([[ 2,  3,  4,  8],
           [13, 12, 17, 19],
           [33, 28, 63, 41]])
    
    # 用np.reshape()处理:
    a1 = np.reshape(a, (2,6))
    a1
    
    array([[ 2,  3,  4,  8, 13, 12],
           [17, 19, 33, 28, 63, 41]])
    
    # 若ab ≠ cd时:报错!
    a11 = np.reshape(a, (3,8))
    a11
    
    ValueError: cannot reshape array of size 12 into shape (3,8)
    
    # 用np.resize()处理时:
    a2 = np.resize(a, (2,6))  # 数据量一样:同np.reshape!
    a2
    
    array([[ 2,  3,  4,  8, 13, 12],
           [17, 19, 33, 28, 63, 41]])
    
    ----
    
    a3 = np.resize(a, (2,3))  # 数据量可以减少!
    a3
    
    array([[ 2,  3,  4],
           [ 8, 13, 12]])
    
    ---
    
    a4 = np.resize(a, (6, 7))  # 数据量可以增多!
    a4
    
    array([[ 2,  3,  4,  8, 13, 12, 17],
           [19, 33, 28, 63, 41,  2,  3],
           [ 4,  8, 13, 12, 17, 19, 33],
           [28, 63, 41,  2,  3,  4,  8],
           [13, 12, 17, 19, 33, 28, 63],
           [41,  2,  3,  4,  8, 13, 12]])
    

    发现np.resize的变化规律:

    • 按照新给的尺寸,从原数组中按照“从左到右、从上到下”的顺序取出并按照同样的顺序往新尺寸里填。一轮全部填完后,再重新来一遍即可。—— 深度学习中常用:所有图片设定统一尺寸(有的删些数据,有的增些数据),图像会有些扭曲变形,但大多数的图像特征还是会保留的!

    相关文章

      网友评论

          本文标题:Python:reshape和resize的区别!

          本文链接:https://www.haomeiwen.com/subject/abhuohtx.html