numpy.reshape()函数在NumPy包中可用。顾名思义,reshape意味着"形状变化"。 numpy.reshape()函数可帮助我们在不更改数据的情况下获得数组的新形状。
有时,我们需要将数据从宽到长整形。因此,在这种情况下,我们必须使用reshape()函数对数组进行整形。
语法
numpy.reshape(arr, new_shape, order=C)
参数
reshape()函数具有以下参数:
1)arr:array_like
这是一个ndarray。这是我们要reshape的源数组。此参数是必需的,并且在numpy.reshape()函数中起着至关重要的作用。
2)new_shape:整数或整数元组
我们要转换原始数组的形状应与原始数组兼容。如果是整数,结果将是该长度的一维数组。一个形状尺寸可以为-1。在此,该值近似于数组的长度和其余维度。
3)order:{C,F,A},可选
这些索引order参数在reshape()函数中起着至关重要的作用。这些索引顺序用于读取源数组的元素,并使用此索引顺序将元素放置到重新排列的数组中。
- 索引顺序" C"是指使用类似C的索引顺序读取/写入元素,其中最后一个轴索引变化最快,回到第一个轴索引变化最快。
- 索引顺序" F"表示使用类似于Fortran的索引顺序读取/写入元素,其中最后一个轴索引变化最快,第一个轴索引变化最快。
- C和F顺序不占用基础数组的内存布局,而仅引用索引的顺序。
- 如果arr在内存中是连续的,则索引顺序A表示以类似于Fortran的索引顺序读取/写入元素,否则使用类C-like的顺序。
返回值
此函数返回一个ndarray。如果可能,它是一个新的视图对象;否则,它将是副本。不能保证返回数组的内存布局。
示例1:C-like索引排序
import numpy as np x=np.arange(12) y=np.reshape(x, (4,3)) x y
输出:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
在上面的代码中
- 我们导入了别名为np的numpy。
- 我们已经使用np.arrange()函数创建了一个数组a。
- 我们已经声明了变量" y"并分配了np.reshape()函数的返回值。
- 我们在函数中传递了数组" x"和形状。
- 最后,我们尝试打印arr的值。
在输出中,该数组已表示为三行四列。
示例2:Equivalent C ravel
import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x),(3,4)) x y
ravel()函数用于创建连续的扁平数组。返回包含输入元素的一维数组。仅在需要时才进行复制。
输出:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
示例3:Fortran-like 索引排序
import numpy as np x=np.arange(12) y=np.reshape(x, (4, 3), order=F) x y
输出:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
array([[ 0, 4, 8],
[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11]])
在上面的代码中
- 我们导入了别名为np的numpy。
- 我们已经使用np.arrange()函数创建了一个数组a。
- 我们已经声明了变量y,并指定了np.reshape()函数的返回值。
- 我们已在函数中传递了数组x以及形状和类似于Fortran的索引顺序。
- 最后,我们尝试打印arr的值。
在输出中,该数组已表示为四行三列。
示例4:Fortran-like索引排序
import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x, order=F), (4, 3), order=F) x y
输出:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
array([[ 0, 4, 8],
[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11]])
示例5:未指定的值推断为2
import numpy as np x=np.arange(12) y=np.reshape(x, (2, -1)) x y
在上面的代码中
- 我们导入了别名为np的numpy。
- 我们使用np.arrange()函数创建了一个数组a。
- 我们已经声明了变量" y"并分配了np.reshape()函数的返回值。
- 我们已在函数中传递了数组x和形状(未指定值)。
- 最后,我们尝试打印arr的值。
在输出中,该数组已表示为两行五列。
输出:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])