numpy.reshape详解

发布时间:2023-05-19

一、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]])

在这个例子中,我们将一个3x2的数组x转换成了一个2x3的数组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])

在上面的例子中,我们将一个3x2的数组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]])

在这个例子中,我们将一个列为主序的3x2数组x转换成了一个行为主序的2x3数组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函数的相关内容。我们可以通过这个函数,轻松地对数组的维度和形状进行修改,方便我们进行数据处理的各种操作。