12 NumPy数组之三维数组

在上一章中,我们探讨了NumPy的二维数组,理解了如何创建和操作这些数组。在本章中,我们将深入三维数组,掌握如何使用NumPy来处理更高维度的数据结构。三维数组通常用于表示立体的数据,比如图像、气体分子,甚至是时间序列的数据在多个特征上的变化。

什么是三维数组?

三维数组是一个包含多个二维数组的结构,通常可以想象成一个立体的矩阵。它的基本定义是,一个三维数组可以用三个维度来表示:深度、行和列。

创建三维数组

我们可以使用 numpy 库中的 arrayzerosones 等函数来创建三维数组。以下是一些常见的方法:

使用 array 创建三维数组

1
2
3
4
5
6
7
8
import numpy as np

# 创建一个三维数组
array_3d = np.array([[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]])

print("三维数组:")
print(array_3d)

在这个例子中,我们创建了一个包含两个二维数组的三维数组。可以看到,数组的形状是 (2, 2, 3),表示它有2个深度层,每个层有2行和3列。

使用 zeros 创建三维数组

如果我们希望初始化一个全为零的三维数组,可以使用 numpy.zeros

1
2
3
4
5
# 创建一个全为零的3x2x4的三维数组
zeros_array = np.zeros((3, 2, 4))

print("全零数组:")
print(zeros_array)

在这个示例中,我们创建了一个形状为 (3, 2, 4) 的三维数组,共有3个深度层、每个层2行4列,全都填充为零。

三维数组的访问和切片

访问三维数组中的元素与二维数组类似,但我们需要提供三个索引。以下是一些访问和切片的示例:

访问单个元素

1
2
3
# 访问第一个深度层、第一行、第二列的元素
element = array_3d[0, 0, 1] # 结果为 2
print("访问的元素:", element)

切片操作

我们可以通过切片操作访问一部分数组。以下示例展示了如何切片三维数组:

1
2
3
4
5
6
7
8
9
# 获取第一深度层的所有数据
first_layer = array_3d[0, :, :] # 结果为 [[1, 2, 3], [4, 5, 6]]
print("第一深度层:")
print(first_layer)

# 获取所有深度层的第一行
first_row_all_layers = array_3d[:, 0, :] # 结果为 [[1, 2, 3], [7, 8, 9]]
print("所有深度层的第一行:")
print(first_row_all_layers)

三维数组的运算

三维数组支持多种运算,比如加法、乘法等。这些运算通常是逐元素的,NumPy会自动广播数组的形状以进行匹配。

逐元素运算示例

1
2
3
4
5
6
7
8
# 创建另一个三维数组
array_b = np.array([[[10, 20, 30], [40, 50, 60]],
[[70, 80, 90], [100, 110, 120]]])

# 进行逐元素加法
result_add = array_3d + array_b
print("逐元素相加结果:")
print(result_add)

在上面的示例中,我们创建了一个新的三维数组 array_b,并将其与 array_3d 逐元素相加。

其他运算

对于三维数组,我们还可以使用许多NumPy提供的函数进行计算,例如:

1
2
3
4
5
6
7
8
# 计算每个深度层的和
sum_layers = np.sum(array_3d, axis=0)
print("每个深度层的和:")
print(sum_layers)

# 计算平均值
mean_value = np.mean(array_3d)
print("平均值:", mean_value)

通过设置 axis 参数,我们可以选择沿哪个维度进行运算。

小结

在本章中,我们详细探讨了三维数组的创建、访问、切片和运算。在数据处理和科学计算中,三维数组为我们提供了强大的工具,尤其是在需要处理复杂数据集时。掌握这些操作,将为后续的更高级数据运算打下坚实的基础。

接下来,我们将在第5章中深入探索 NumPy 数组的运算,包括更多的数学操作和数组的变换,敬请期待!

12 NumPy数组之三维数组

https://zglg.work/numpy-zero/12/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论