resize 和 reshape 有什么区别

ghe*_*sra 1 python numpy

我正在写一行代码,我得到了一些奇怪的输出。

a = np.arange(2,11).resize((3,3))
print(a)

a = np.arange(2,11).reshape((3,3)) 
print(a)
Run Code Online (Sandbox Code Playgroud)

第一个给了我 None 但第二个给了我一个 3X3 矩阵。但是当我在单独的行中编写第一个代码时,它不会给我 None

a = np.arange(2,11)
a.resize((3,3))
print(a)
Run Code Online (Sandbox Code Playgroud)

在这种情况下调整大小和重塑之间有什么区别,一般有什么区别?

yat*_*atu 6

那是因为ndarray.resize就地修改数组形状,并且由于您要重新分配给aget None,因为就地操作不会返回任何内容。reshape而是返回数组的视图:

a = np.arange(2,11)
a.shape
#(10,)

a.resize((3,3))
a.shape
# (3, 3)

np.arange(2,11).reshape((3,3)).shape
# (3, 3)
Run Code Online (Sandbox Code Playgroud)