美文网首页
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