赞
踩
迷途小书童
读完需要
6
分钟速读仅需 2 分钟
3D 矩阵又称为立体矩阵,是指一个具有三个维度的矩阵结构。相比二维矩阵,它增加了一个深度维度。在 3D 矩阵中,第一个维度表示行数,第二个维度表示列数,第三个维度表示层数或深度,可以想象成一个多层的立方体结构。三维矩阵通常也称为 NxNxN 矩阵,在计算机视觉、医学成像、深度学习、增强现实等各个领域和应用中都非常有用。
本文中,我们将逐步介绍在 Python 中如何实现和使用 3D 矩阵,这里会介绍 2 种方法
使用 python 中的列表
使用 numpy 库
1
列表实现
使用嵌套列表来实现 3D 矩阵是相对容易想到的方法。我们将从一个空列表开始,并向其中添加更多列表以表示 3D 矩阵的每一层。在此 3D 矩阵的每一层中,我们将附加列表来表示行,并在每行中添加各个元素。这样,我们将构建一个列表层次结构,模拟矩阵的三个维度。通过遍历列表的层次结构,我们可以访问和修改矩阵中的各个部分。
比如,我们要创建一个全是零的 3D 矩阵
- N = 3
- three_d_matrix = [[[0 for _ in range(N)] for _ in range(N)] for _ in range(N)]
- print(three_d_matrix)
这行代码使用嵌套列表推导式创建一个全是 0 的 3D 矩阵。每个 for _ in range(N) 循环都会创建一个包含 N 个零的一维列表。这里,_ 是当我们不需要循环变量时使用的常见约定。
代码的执行的结果是
[[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
要访问和修改 3D 矩阵中的元素,我们可以这样做
- # 给元素赋值
- three_d_matrix[0][1][2] = 33
要打印整个 3D 矩阵
- for layer in three_d_matrix:
- for row in layer:
- print(row)
- print("-" * 10)
打印语句的输出是
- [0,0,0]
- [0,0,33]
- [0,0,0]
- ----------
- [0,0,0]
- [0,0,0]
- [0,0,0]
- ----------
- [0,0,0]
- [0,0,0]
- [0,0,0]
- ----------
2
使用 NumPy 实现
NumPy 是一个用于数值和科学计算的 Pyhton 库,它包含广泛的内置功能,可用于各种用途。要使用 Numpy,首先要做的就是安装 NumPy 库,执行命令
pip install numpy
下面我们来看看如何实现
- import numpy as np
-
-
- N = 3
- three_d_matrix = np.zeros((N, N, N), dtype=int)
- print(three_d_matrix)
这里通过 np.zeros() 来创建一个全是 0 的 3D 数组,其中 (N, N, N) 参数指定数组的形状,dtype=int 指定数组元素的数据类型。
代码执行的结果是
- [[[0 0 0]
- [0 0 0]
- [0 0 0]]
-
-
- [[0 0 0]
- [0 0 0]
- [0 0 0]]
-
-
- [[0 0 0]
- [0 0 0]
- [0 0 0]]]
访问和修改元素
three_d_matrix[0, 1, 2] = 33
要迭代 3D 矩阵中的每个元素,我们需要借助嵌套 for 循环
- import numpy as np
-
-
- N = 3
- array = np.random.rand(N, N, N)
-
-
- for i in range(N):
- for j in range(N):
- for k in range(N):
- element = array[i, j, k]
- print(f"Element at ({i}, {j}, {k}) = {element}")
矩阵加法
- import numpy as np
-
-
- N = 3
- array1 = np.random.rand(N, N, N)
- array2 = np.random.rand(N, N, N)
- result = array1 + array2
- print(result)
类似地,对于减法
- import numpy as np
-
-
- N = 3
- array1 = np.random.rand(N, N, N)
- array2 = np.random.rand(N, N, N)
- result = array1 - array2
- print(result)
然后就是乘法
- import numpy as np
-
-
- N = 3
- array1 = np.random.rand(N, N, N)
- array2 = np.random.rand(N, N, N)
- result = np.matmul(array1, array2)
- print(result)
转置操作
- import numpy as np
-
-
- N = 3
- array = np.random.rand(N, N, N)
- transposed_array = array.transpose()
- print("Original Array:")
- print(array)
- print("\nTransposed Array:")
- print(transposed_array)
transpose() 是一个内置的 NumPy 函数,用于执行 3D 数组的转置。矩阵的转置是一个新的矩阵,其中的行变成列,列变成行。
3
总结
通过实现代码的对比,我们可以清楚地看到,2 种方法中,使用 NumPy 可以更快地执行数值计算,并且具有更丰富的功能,效率也更高。
4
免费社群
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。