numpy.reshape#

numpy.reshape(a, /, shape, order='C', *, copy=None)[源代码]#

在不改变数据的情况下,为数组赋予新的形状。

参数:
a类数组对象

要重塑的数组。

shapeint 或 int 元组

新的形状应与原始形状兼容。如果它是一个整数,则结果将是该长度的一维数组。一个形状维度可以为 -1。在这种情况下,该值将根据数组的长度和剩余维度推断出来。

order{‘C’, ‘F’, ‘A’}, optional

使用此索引顺序读取 a 中的元素,并使用此索引顺序将元素放入重塑后的数组中。“C”表示使用类 C 语言的索引顺序读取/写入元素,其中最后一个轴索引变化最快,第一个轴索引变化最慢。“F”表示使用类 Fortran 语言的索引顺序读取/写入元素,其中第一个索引变化最快,最后一个索引变化最慢。请注意,“C”和“F”选项不考虑底层数组的内存布局,仅指索引的顺序。“A”表示如果 a 在内存中是 Fortran 连续 的,则以类 Fortran 语言的索引顺序读取/写入元素,否则以类 C 语言的顺序读取/写入元素。

copybool, optional

如果为 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]])