二者都是改變輸入的形狀,但是區別是: reshape只能改變形狀,不能改變原始輸入包含的元素個數
resize可以改變尺寸。
具體看下面的例子:
import numpy as np
a = [[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可以改變尺寸,但是隻是進行簡單的裁剪和填充。如果想更加精確的使用插值的方式進行尺寸的擴大或縮小,比如改變一副圖像的形狀,則不能用這個函數進行。