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数组的几种方法。

更新于:2023年5月29日

浏览量:124

开启你的职业生涯

完成课程获得认证

开始学习
广告