numpy.reshape#

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

在不改变其数据的情况下,给数组一个新的形状.

参数:
aarray_like

要重塑的数组.

shape整数或整数的元组

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

order{‘C’, ‘F’, ‘A’}, 可选

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

newshape整数或整数的元组

自 2.1 版本弃用: shape 参数取代.为向后兼容而保留.

copy布尔值, 可选

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