必须是矩阵或者数组才能使用reshape函数来对其进行重组,在使用reshape时我们需要注意数据量是否能够转换成我们所需要的行列数,比如20个数分成3行8列是会报错的
以下示例源数据为
import numpy as np
print(type(np.arange(20)))#需要注意arange(8)创建范围时从0开始不包括8
print(np.arange(20))
'''以下为输出结果
<class 'numpy.ndarray'>
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]'''
reshape的常用形式有三种:
(1)reshape(m,n):转换成m行n列
import numpy as np
data=np.arange(8)#创建源数据
print(data.reshape(4,2))#将源数据转换成4行2列的矩阵
'''以下为输出结果
[[0 1]
[2 3]
[4 5]
[6 7]]'''
(2)reshape(m,-1):转换成m行1列
import numpy as np
data=np.arange(8)#创建源数据
data.reshape(4,2)#先转换成4行2列
print(data.reshape(8,-1))#转换成8行1列的矩阵,作用与reshape(8,1)
'''输出:
[[ 0]
[ 1]
[ 2]
[ 3]
[ 4]
[ 5]
[ 6]
[ 7]]'''
在使用时需要注意以下情况
import numpy as np
data=np.arange(8)
data.reshape(4,2)
'''转换成4行2列后的数据:
[[0 1]
[2 3]
[4 5]
[6 7]]'''
print(data.reshape(2,-1))#对自动8个数据进行重组,以不是-1的指定元素为主
#这里reshape(2,-1)尚可转换成2行,若是reshape(2,1)明确指定行列的情况下则会出现无法重组的报错
'''转换成2行1列则会出现:
[[0 1 2 3]
[4 5 6 7]]'''
(3)reshape(-1,n):转换成1行n列
import numpy as np
data=np.arange(8)
data.reshape(4,2)
print(data.reshape(-1,8))#将源数据转换成1行20列的数据
#输出:
#[[ 0 1 2 3 4 5 6 7 ]]
在使用时需要注意以下情况:
import numpy as np
data=np.arange(8)
data.reshape(4,2)
'''转换成4行2列后的数据:
[[0 1]
[2 3]
[4 5]
[6 7]]'''
print(data.reshape(-1,2))#对自动8个数据进行重组,以不是-1的指定元素为主
#这里reshape(-1,2)尚可转换成2列,若是reshape(1,2)明确指定行列的情况下则会出现无法重组的报错
#reshape(-1,2)后的结果:
'''[[0 1]
[2 3]
[4 5]
[6 7]]'''