首页 > NumPy 阅读数:40

NumPy数组的展平

在 NumPy 中,利用 ravel() 和 flatten() 函数可实现数组的展平操作。

ravel() 函数

在 NumPy 中,可以使用 ravel() 函数将多维数组展平(即变成一维数组),展平数组元素的顺序通常是“C 风格”的,就是以行为基准,元素最右边的索引发生变化,如元素 a[0,0] 之后是 a[0,1]。如果数组改变成其他形状,数组仍然是“C 风格”的。NumPy 通常创建一个以这个顺序保存数据的数组,所以 ravel() 函数通常不需要创建调用数组的副本。

用 ravel() 函数展平数组的方法如下:

数组名.ravel()

例如,arr.ravel() 返回将 arr 数组展平成一维新数组视图,原数组 arr 不改变。

flatten() 函数

flatten() 函数也是将多维数组展平,与 ravel() 函数的功能相同,不过 flatten() 函数会请求分配内存来保存结果,而 ravel() 函数只是返回数组的一个视图 (view)。

用 flatten() 函数展平数组的方法如下:

数组名.flatten()

例如,arr.flatten() 表示将 arr 数组展平成一维新数组,原数组 arr 不改变。

数组的展平示例

示例代码 example1 如下。
# -*- coding: UTF-8 -*-
import numpy as np
#创建3行4列数组
arr = np.array([[0,1,2,4],[5,6,7,8],[9,10,11,12]])
#用ravel函数展平arr成一维数组arr_b,但arr数组不改变
arr_b = arr.ravel()
print(arr,arr_b)
#用flatten展平arr成一维数组arr_c,但arr数组不改变
arr_c = arr.flatten()
print(arr,arr_c)