np.resize 和 np.reshape 的區別

二者都是改變輸入的形狀,但是區別是: 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可以改變尺寸,但是隻是進行簡單的裁剪和填充。如果想更加精確的使用插值的方式進行尺寸的擴大或縮小,比如改變一副圖像的形狀,則不能用這個函數進行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章