一般用法
numpy.arange(n).reshape(a, b);
依次生成n个自然数,并且以a行b列的数组形式显示:
>> np.arange(16).reshape(2,8) #生成16个自然数,以2行8列的形式显示
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15]])
特殊用法
mat (or array).reshape(c, -1);
必须是矩阵格式或者数组格式,才能使用 .reshape(c, -1)
函数, 表示将此矩阵或者数组重组,以 c行d列的形式表示(-1的作用就在此,自动计算d(d = 数组或者矩阵里面所有的元素个数/c), d必须是整数,不然报错)(reshape(-1, e)
即列数固定,行数需要计算):
>> arr=np.arange(16).reshape(2,8)
>> arr
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15]])
>> arr.reshape(4,-1) #将arr变成4行的格式,列数自动计算的(c=4, d=16/4=4)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>> arr.reshape(8,-1) #将arr变成8行的格式,列数自动计算的(c=8, d=16/8=2)
array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15]])
>> arr.reshape(10,-1) #将arr变成10行的格式,列数自动计算的(c=10, d=16/10=1.6 != Int)
ValueError: cannot reshape array of size 16 into shape (10,newaxis)
其他用法
numpy.arange(a,b,c)/ numpy.arange(a,b,c).reshape(m,n);
从 数字a起, 步长为c, 到b结束,生成array:
>> np.arange(1,12,2)#间隔2生成数组,范围在1到12之间
array([ 1, 3, 5, 7, 9, 11])
>> np.arange(1,12,2).reshape(3,2)
array([[ 1, 3],
[ 5, 7],
[ 9, 11]])
本文由 giao创作, 采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 原文地址:《Numpy中reshape函数、reshape(1,-1)的含义简要讲解》
最后一次更新于2019-09-15
0 条评论