当前位置: 代码迷 >> 综合 >> np.resize 和 np.reshape 的区别
  详细解决方案

np.resize 和 np.reshape 的区别

热度:46   发布时间:2023-09-05 19:38:34.0

二者都是改变输入的形状,但是区别是: 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可以改变尺寸,但是只是进行简单的裁剪和填充。如果想更加精确的使用插值的方式进行尺寸的扩大或缩小,比如改变一副图像的形状,则不能用这个函数进行。

  相关解决方案