Python 获取平展化的一维数组

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编程中获得扁平化的一维数组的几种方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程