numpy.reshape#
- numpy.reshape(a, /, shape=None, order='C', *, newshape=None, copy=None)[源代码]#
在不更改数据的情况下为数组赋予新的形状.
- 参数:
- aarray_like
需要被重塑的数组.
- shapeint 或 ints 元组
新的形状应该与原始形状兼容.如果是一个整数,那么结果将是一个该长度的1维数组.一个形状维度可以是-1.在这种情况下,该值从数组的长度和剩余维度推断.
- order{‘C’, ‘F’, ‘A’},可选
使用此索引顺序读取
a的元素,并使用此索引顺序将元素放入重塑的数组中.’C’表示使用类似C的索引顺序读取/写入元素,其中最后一个轴索引变化最快,返回到第一个轴索引变化最慢.’F’表示使用类似Fortran的索引顺序读取/写入元素,其中第一个索引变化最快,最后一个索引变化最慢.请注意,’C’和’F’选项不考虑底层数组的内存布局,仅指索引的顺序.’A’表示如果a在内存中是Fortran连续的,则以Fortran-like的索引顺序读取/写入元素,否则以C-like顺序读取/写入元素.- newshapeint 或 ints 元组
自 2.1 版本弃用: 由
shape参数替换.保留以实现向后兼容性.- copybool, 可选
如果
True,则复制数组数据.如果None,则仅当order需要时才会创建副本.对于False,如果无法避免复制,则会引发ValueError.默认值:None.
- 返回:
- 调整后的数组ndarray
如果可能,这将是一个新的视图对象;否则,它将是一个副本.请注意,不能保证返回数组的内存布局(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]])