Python 获取平展化的一维数组
数组是一种数据结构,用于存储一组同类型的数据元素。它可以有多个维度。
一维数组 −
[1 2 3 4 5 6]
2D数组−
[[1 2 3]
[4 5 6]
[7 8 9]]
将一个数组展平意味着减少多维数组的维度。
在下面的文章中,我们将讨论使用Python程序获取展平的一维数组。在这里,我们将使用列表和NumPy数组来表示一个普通数组,因为Python没有本地的数组数据结构。
输入输出场景
假设我们有一个二维数组作为输入,输出将是展平的数组。
Input array:
[[1 2 3]
[4 5 6]
[7 8 9]]
Output:
Flattened array: [1 2 3 4 5 6 7 8 9]
使用嵌套列表
从Python的functools模块中,我们可以使用reduce函数来展开二维数组。reduce()函数用于将指定的函数应用于序列的项目,并返回一个减小的序列。以下是实现此目的的语法 –
reduce(function, iterable[, initializer])
在这个示例中,我们将使用lambda和reduce()函数来获得扁平化的1D数组。
from functools import reduce
arr_2d = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]
# print initial array
print("Original array: ", arr_2d)
# flattening the 2d array into 1d array
# using reduce function
flattened_arr = reduce(lambda x,y:x+y, arr_2d)
print("Flattened array: ", flattened_arr)
输出
Original array: [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
Flattened array: [1, 2, 3, 3, 6, 7, 7, 5, 4]
使用lambda函数,reduce函数成功地将二维数组展平。
示例
此外,我们还可以使用列表推导来获得展平的数组。让我们看下面的示例。
arr_2d = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]
# print initial array
print("Original array: ", arr_2d)
# flattening the 2d array into 1d array
# using list comprehension
flattened_arr = [j for sub in arr_2d for j in sub]
print("Flattened array: ", flattened_arr)
输出
Original array: [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
Flattened array: [1, 2, 3, 3, 6, 7, 7, 5, 4]
借助列表推导的帮助,我们已经迭代了数组和其子数组元素,然后创建了一个存储在flattened_arr变量中的展平数组。
示例
在这个示例中,我们将使用sum()函数来获取1维数组。
arr_2d = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]
# print initial array
print("Original array: ", arr_2d)
# flattening the 2d array into 1d array
# using list sum function
flattened_arr = sum(arr_2d, [])
print("Flattened array: ", flattened_arr)
输出
Original array: [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
Flattened array: [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 initial array
print("Original array: ", arr_2d)
# get the flattened array
flattened_arr = arr_2d.flatten()
print("Flattened array: ", flattened_arr)
输出
Original array:[[1 2 3]
[4 5 6]
[7 8 9]]
Flattened array: [1 2 3 4 5 6 7 8 9]
这些是在python编程中获得扁平化的一维数组的几种方法。