二者都是改变输入的形状,但是区别是: reshape只能改变形状,不能改变原始输入包含的元素个数
resize可以改变尺寸。
具体看下面的例子:
import numpy as npa = [[1,2,3],[4,5,6]]b1 = np.reshape(a,[1,6])
b2 = np.resize(a,[2,2])
b3 = np.resize(a,[2,10])
a = np.array(a)
a.resize([2,10])print("reshape:\n",b1)
print("resize:\n",b2)
print("resize:\n",b3)
print("resize:\n",a)
输出结果:
reshape:[[1 2 3 4 5 6]]
resize:[[1 2][3 4]]
resize:[[1 2 3 4 5 6 1 2 3 4][5 6 1 2 3 4 5 6 1 2]]
resize:[[1 2 3 4 5 6 0 0 0 0][0 0 0 0 0 0 0 0 0 0]]
可以发现,resize在尺寸缩小时,只保留一部分元素;在尺寸扩大的时候,它会重复使用原始输入的元素值进行填充(也可以通过 a.resize() 的方式实现用0进行填充)。
特别注意的一点是:这两个函数只是改变形状,虽然resize可以改变尺寸,但是只是进行简单的裁剪和填充。如果想更加精确的使用插值的方式进行尺寸的扩大或缩小,比如改变一副图像的形状,则不能用这个函数进行。