Python中如何打包数组?

2023-06-03 05:06:07 python 数组 打包

python中,我们经常需要将多个数组打包成一个数组,以便于进行操作或者传递给函数。Python提供了多种方法来打包数组,本文将介绍其中的两种方法:zip()和numpy库中的column_stack()。

一、使用zip()函数进行数组打包

zip()函数可以将多个数组按照相同的索引位置打包成一个元组,然后将这些元组组成一个新的数组。下面是一个简单的例子:

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]

zipped = zip(a, b, c)

print(list(zipped))

运行结果为:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

可以看到,zip()函数将a、b、c三个数组按照索引位置打包成了一个新的数组。

需要注意的是,zip()函数返回的是一个迭代器,需要使用list()函数将其转换为列表。

如果需要将打包后的数组进行解包,可以使用zip()函数的反函数——解压符号*:

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]

zipped = zip(a, b, c)

unzipped = zip(*zipped)

print(list(unzipped))

运行结果为:

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

可以看到,使用解压符号*将打包后的数组进行解包,得到了原始的三个数组。

二、使用numpy库中的column_stack()函数进行数组打包

numpy是Python中一个重要的科学计算库,其中包含了多种数组操作函数,其中就包含了用于打包数组的column_stack()函数。

column_stack()函数可以将多个一维数组按照列方向打包成一个二维数组,下面是一个简单的例子:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])

stacked = np.column_stack((a, b, c))

print(stacked)

运行结果为:

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

可以看到,column_stack()函数将a、b、c三个数组按照列方向打包成了一个二维数组。

需要注意的是,column_stack()函数的参数是一个元组,需要使用两个括号将数组括起来,否则会出现语法错误。

如果需要将打包后的数组进行解包,可以使用numpy库中的split()函数:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])

stacked = np.column_stack((a, b, c))

unstacked = np.split(stacked, 3, axis=1)

print(unstacked)

运行结果为:

[array([[1],
       [2],
       [3]]), array([[4],
       [5],
       [6]]), array([[7],
       [8],
       [9]])]

可以看到,使用split()函数将打包后的数组进行解包,得到了原始的三个数组。

三、总结

本文介绍了Python中两种常用的打包数组的方法:zip()函数和numpy库中的column_stack()函数。zip()函数可以将多个数组按照相同的索引位置打包成一个元组,column_stack()函数可以将多个一维数组按照列方向打包成一个二维数组。需要注意的是,zip()函数返回的是一个迭代器,需要使用list()函数将其转换为列表;column_stack()函数的参数是一个元组,需要使用两个括号将数组括起来,否则会出现语法错误。

相关文章