一、reshape概述
numpy.reshape函数可以将一个数组的形状进行修改,但是必须确保修改前后数组元素总数不变。也就是说,在reshape的过程中,我们只是改变了数组的形状,而没有改变数组元素的数量。
二、reshape函数的基本用法
reshape函数的基本用法非常简单,它只需要传入一个代表新的形状的元组即可,如下所示:
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = np.reshape(x, (2, 3)) print(y)
输出:
array([[1, 2, 3], [4, 5, 6]])
在这个例子中,我们将一个3×2的数组x转换成了一个2×3的数组y。新的数组的第一维度为2,第二维度为3,因此新数组中有2行3列共6个元素。
三、reshape函数的高级用法
1. 自动推导
reshape函数可以自动推导出新数组的形状,只需要将一个维度指定为-1即可,如下所示:
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = np.reshape(x, (-1,)) print(y)
输出:
array([1, 2, 3, 4, 5, 6])
在上面的例子中,我们将一个3×2的数组x转换成了一个1维数组y。其中,将第二个维度指定为-1,表示该维度会自动推导得到。
2. Fortran连续数组
如果一个数组是Fortran连续(也即,列为主序的数组),那么reshape函数的表现会有所不同,具体可以看下面的例子:
import numpy as np x = np.arange(6).reshape((3, 2)).T y = np.reshape(x, (2, 3), order='F') print(y)
输出:
array([[0, 2, 4], [1, 3, 5]])
在这个例子中,我们将一个列为主序的3×2数组x转换成了一个行为主序的2×3数组y。注意,我们在reshape函数中指定了order参数为‘F’,表示按照列为主序对数组进行重构。
3. 数组展平
有时候我们想将一个多维数组展平成一个一维数组,也就是说,我们将数组看作是一列,进行重构,如下所示:
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = np.reshape(x, (x.size,)) print(y)
输出:
array([1, 2, 3, 4, 5, 6])
四、总结
以上就是reshape函数的相关内容。我们可以通过这个函数,轻松地对数组的维度和形状进行修改,方便我们进行数据处理的各种操作。