NumPy中的resize和reshape函数

NumPy中的resize函数和reshape函数

通过实验可以发现,resize函数和reshape函数都各有两种调用方式:若假设x为ndarray的数组,则可以调用np.reshape(x,元组)和x.reshape(元组),resize也是一样,有x.resize()和np.resize()两种方式。

这四种调用的方式只有x.resize()一种会实际改变原数据的形状。下面来看x.shape():

>>> import numpy as np
>>> t1=np.arange(12)
>>> t1.shape
(12,)
>>> print(t1.reshape((2,6)))
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
>>> print(t1)
[ 0  1  2  3  4  5  6  7  8  9 10 11]

x.reshape()是最常见的调用方式,这种会返回一个数据和x一致但是形状修改的数组,x原有的形状不会被改变

>>> t2=np.arange(12)
>>> print(np.reshape(t2,(2,6)))
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
>>> print(t2)
[ 0  1  2  3  4  5  6  7  8  9 10 11]

可以看到np.reshape()的方式和x.shape()的结果一致,都会返回一个数据相同、形状修改的数组,原数组的形状未得到改变

>>> t3=np.arange(12)
>>> print(t3.resize((2,6)))
None
>>> t3
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11]])
>>>

与reshape函数不同,x.resize()没有输出值,而且会修改原数组的形状。也就是不会有新数组产生,只是原来的数组变了形状。

>>> t4=np.arange(12)
>>> print(np.resize(t4,(2,6)))
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
>>> t4
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

np.resize()有输出值,原有数组的形状也没有改变。按结果而言,x.reshape()、np.reshape()、np.resize()函数的功能都一样,返回一个形状改变的数组,原数组形状不变。只有x.resize()会真正改变原数组的形状

你可能感兴趣的:(python,numpy)