Python程序获取扁平化的1D数组
数组是一种数据结构,用于存储一组同构数据元素。它可以有多个维度。
一维数组 -
[1 2 3 4 5 6]
二维数组 -
[[1 2 3] [4 5 6] [7 8 9]]
扁平化数组意味着降低多维数组的维度。
在下面的文章中,我们将讨论Python程序如何获取扁平化的1D数组。我们将使用列表和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])
其中,
function 是一个预定义的函数,应用于可迭代对象的各项。
Iterable 任何Python可迭代对象,例如:列表、元组、字符串和字典。
要使用`reduce`函数,我们需要从`functools`模块导入它。
示例
在这个例子中,我们将使用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]
`reduce`函数在lambda函数的帮助下成功地扁平化了二维数组。
示例
此外,我们也可以使用列表推导式来获取扁平化的数组。让我们看看下面的例子。
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()`函数来获取1D数组。
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, [])`扁平化二维数组,这里内置的`sum()`函数执行内部数组的连接,类似于`[1, 2] + [3, 4]`。
注意 - 不推荐这种方法,因为它执行任务的时间更长。
使用numpy.flatten()函数
我们可以轻松地使用NumPy的`flatten()`函数来获取扁平化的数组。以下是该函数的语法:
ndarray.flatten(order='C')
该方法从输入的N维数组返回一个扁平化的数组。这里的参数`order`是一个可选参数,默认值为'C'。
示例
在这个例子中,我们将使用`flatten()`函数将二维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编程中获取扁平化1D数组的几种方法。