在 Numpy 中,三维数组(张量)是通过嵌套列表创建的,每个维度可以看作是一个更高维度的数组的元素。你提供的三维张量如下:
import numpy as np
tensor = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
这个张量可以看作是一个 2x2x2 的数组(即 2 个 2x2 的矩阵)。让我们详细解释一下这个三维张量的结构,并说明如何对应到三维坐标。
张量的结构
这个张量可以拆分为两个 2x2 的矩阵:
第一个 2x2 矩阵:
[[1, 2],
[3, 4]]
第二个 2x2 矩阵:
[[5, 6],
[7, 8]]
三维坐标的对应关系
对于一个三维张量 tensor[i][j][k]
,i
是第一个维度的索引,j
是第二个维度的索引,k
是第三个维度的索引。具体来说:
- 第一个维度
i
表示选择哪一个 2x2 矩阵(0 或 1) - 第二个维度
j
表示选择矩阵中的哪一行(0 或 1) - 第三个维度
k
表示选择矩阵中的哪一列(0 或 1)
具体来说,tensor[i][j][k]
对应的值如下:
-
tensor[0][0][0]
对应元素 1 -
tensor[0][0][1]
对应元素 2 -
tensor[0][1][0]
对应元素 3 -
tensor[0][1][1]
对应元素 4 -
tensor[1][0][0]
对应元素 5 -
tensor[1][0][1]
对应元素 6 -
tensor[1][1][0]
对应元素 7 -
tensor[1][1][1]
对应元素 8
一般化的 n* n * n 三维张量
对于一个一般化的 nnn 三维张量,假设 tensor
是一个大小为 nnn 的三维数组,访问其元素的方式如下:
tensor[i][j][k]
,其中i
从 0 到 n-1,j
从 0 到 n-1,k
从 0 到 n-1
三维坐标 (i, j, k)
对应的元素在三维张量中表示第 i
个 n*n 矩阵中的第 j
行,第 k
列。
例子
假设 n = 3
,则一个 3x3x3 的张量可能如下所示:
tensor = np.array([
[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[10, 11, 12], [13, 14, 15], [16, 17, 18]],
[[19, 20, 21], [22, 23, 24], [25, 26, 27]]
])
在这个例子中:
tensor[0][0][0]
是 1tensor[0][2][2]
是 9tensor[2][0][0]
是 19tensor[2][2][2]
是 27