获取扁平化一维数组的 Python 程序

pythonserver side programmingprogramming

数组是一种数据结构,用于存储一组同类数据元素。它可以有多个维度。

一维数组 −

[1 2 3 4 5 6]

二维数组 −

[[1 2 3]
[4 5 6]
[7 8 9]]

扁平化数组意味着降低多维数组的维数。

在下面的文章中,我们将讨论获取扁平化一维数组的 Python 程序。在这里,我们将使用 List 和 NumPy 数组来表示普通数组。因为 python 没有数组的原生数据结构。

输入输出场景

假设我们有一个二维数组作为输入。输出将是扁平化数组。

输入数组:
[[1 2 3]
[4 5 6]
[7 8 9]]
输出:
扁平化数组:[1 2 3 4 5 6 7 8 9]

使用嵌套列表

从 python functools 模块中,我们可以使用 reduce 函数来扁平化二维数组。reduce() 函数用于将指定的函数应用于序列的项目,它将返回一个简化的序列。以下是执行此操作的语法 –

reduce(function, iterable[, initializer])

其中,

  • function 是一个预定义函数,适用于可迭代项。

  • Iterable 任何 python 可迭代项,例如:列表、元组、字符串和字典。

要使用 reduce 函数,我们需要从 functools 模块导入它。

示例

在此示例中,我们将使用 lambda 和 reduce () 函数获取扁平化的 1d 数组。

from functools import reduce 

arr_2d = [[1, 2, 3],
   [3, 6, 7],
   [7, 5, 4]]            
# 打印初始数组
print("原始数组: ", arr_2d)

# 将二维数组展平为一维数组
# 使用 Reduce 函数
flattened_arr = reduce(lambda x,y:x+y, arr_2d)

print("展平后的数组: ", flattened_arr)

输出

原始数组:[[1, 2, 3], [3, 6, 7], [7, 5, 4]]
展平后的数组:[1, 2, 3, 3, 6, 7, 7, 5, 4]

Reduce 函数借助 Lambda 函数成功展平了二维数组。

示例

此外,我们可以使用列表推导来获取扁平数组。让我们看下面的例子。

arr_2d = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]

# 打印初始数组
print("原始数组: ", arr_2d)

# 将 2d 数组展平为 1d 数组
# 使用列表推导
flattened_arr = [j for sub in arr_2d for j in sub]
print("展平数组: ", flattened_arr)

输出

原始数组: [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
展平数组: [1, 2, 3, 3, 6, 7, 7, 5, 4]

借助列表推导,我们迭代了数组及其子数组元素,然后创建了扁平数组,该数组存储在 flattened_arr 变量中。

示例

在此示例中,我们将使用 sum() 函数来获取 1d 数组。

arr_2d = [[1, 2, 3],
   [3, 6, 7],
   [7, 5, 4]]            

# 打印初始数组
print("原始数组: ", arr_2d)

# 将 2d 数组展平为 1d 数组
# 使用列表求和函数
flattened_arr = sum(arr_2d, [])

print("展平后的数组: ", flattened_arr)

输出

原始数组:[[1, 2, 3], [3, 6, 7], [7, 5, 4]]
展平后的数组:[1, 2, 3, 3, 6, 7, 7, 5, 4]

语法 sum(arr_2d, []) 展平 2D 数组,此处内置的 sum() 函数执行内部数组的连接,类似于 [1, 2] + [3, 4]。

注意− 不推荐使用此方法,因为执行任务需要更多时间。

使用 numpy.flatten() 函数

我们可以借助 NumPy flatten() 函数轻松获取扁平化数组。以下是此函数的语法 –

ndarray.flatten(order='C')

该方法从输入的 N 维数组返回扁平化数组。这里的参数 order 是可选参数,默认值为 C。

示例

在本例中,我们将使用 flattened() 函数将二维 numpy 数组展平为一维数组。

import numpy as np
arr_2d = np.array([[1, 2, 3],[4, 5, 6], [7, 8, 9]])
# 打印初始数组
print("Original array: ", arr_2d)
# 获取展平后的数组
flattened_arr = arr_2d.flatten()

print("Flattened array: ", flattened_arr)

输出

Original array:[[1 2 3]
[4 5 6]
[7 8 9]]
扁平化数组:[1 2 3 4 5 6 7 8 9]

以上就是python编程中获取扁平化一维数组的几种方法。


相关文章