numpy.reshape#
- numpy.reshape(a, /, shape=None, *, newshape=None, order='C', copy=None)[source]#
在不改变数组数据的情况下,为数组赋予新的形状。
- 参数:
- aarray_like
要重塑的数组。
- shapeint 或 int 元组
新形状应与原始形状兼容。如果为整数,则结果将是该长度的 1 维数组。一个形状维度可以是 -1。在这种情况下,该值从数组的长度和剩余维度推断得出。
- newshapeint 或 int 元组
版本 2.1 中已弃用: 已由
shape
参数替换。保留以实现向后兼容性。- order{‘C’, ‘F’, ‘A’}, 可选
使用此索引顺序读取
a
的元素,并使用此索引顺序将元素放入重塑后的数组中。‘C’ 表示使用类似 C 的索引顺序读取/写入元素,其中最后一个轴索引变化最快,回到第一个轴索引变化最慢。‘F’ 表示使用类似 Fortran 的索引顺序读取/写入元素,其中第一个索引变化最快,最后一个索引变化最慢。请注意,‘C’ 和 ‘F’ 选项不考虑底层数组的内存布局,仅指索引顺序。‘A’ 表示如果a
在内存中是 Fortran 连续的,则使用类似 Fortran 的索引顺序读取/写入元素,否则使用类似 C 的顺序。- copybool, 可选
如果为
True
,则复制数组数据。如果为None
,则仅当order
需要时才进行复制。对于False
,如果无法避免复制,则引发ValueError
。默认值:None
。
- 返回值:
- reshaped_arrayndarray
如果可能,这将是一个新的视图对象;否则,它将是一个副本。请注意,不保证返回数组的内存布局(C 连续或 Fortran 连续)。
另请参阅
ndarray.reshape
等效方法。
注释
并非总是可以在不复制数据的情况下更改数组的形状。
关键字
order
指定了从a
中获取值以及随后将值放置到输出数组中的索引顺序。例如,假设您有一个数组>>> a = np.arange(6).reshape((3, 2)) >>> a array([[0, 1], [2, 3], [4, 5]])
您可以将重塑视为首先展平数组(使用给定的索引顺序),然后使用与展平相同的索引顺序将展平数组中的元素插入新数组。
>>> np.reshape(a, (2, 3)) # C-like index ordering array([[0, 1, 2], [3, 4, 5]]) >>> np.reshape(np.ravel(a), (2, 3)) # equivalent to C ravel then C reshape array([[0, 1, 2], [3, 4, 5]]) >>> np.reshape(a, (2, 3), order='F') # Fortran-like index ordering array([[0, 4, 3], [2, 1, 5]]) >>> np.reshape(np.ravel(a, order='F'), (2, 3), order='F') array([[0, 4, 3], [2, 1, 5]])
示例
>>> import numpy as np >>> a = np.array([[1,2,3], [4,5,6]]) >>> np.reshape(a, 6) array([1, 2, 3, 4, 5, 6]) >>> np.reshape(a, 6, order='F') array([1, 4, 2, 5, 3, 6])
>>> np.reshape(a, (3,-1)) # the unspecified value is inferred to be 2 array([[1, 2], [3, 4], [5, 6]])