我试图理解 3D 数组(或者一般的多维数组),但这有点让我大吃一惊。尤其是 3D numpy 数组的打印方式对我来说是违反直觉的。这个问题类似,但更多的是关于编程语言之间的差异,我仍然没有完全理解。让我尝试解释一下。
假设我想创建一个 3 行(长度)、5 列(宽度)和 2 深度的 3D 数组。所以是一个 3x5x2 矩阵。
我执行以下操作:
import numpy as np
a = np.zeros(30).reshape(3, 5, 2)
Run Code Online (Sandbox Code Playgroud)
对我来说,打印此内容的逻辑方法如下:
[[[0. 0. 0. 0. 0.] #We can still see three rows from top to bottom
[0. 0. 0. 0. 0.]] #We can still see five columns from left to right
[[0. 0. 0. 0. 0.] #Depth values are shown underneath each other
[0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. …Run Code Online (Sandbox Code Playgroud) 我还没有理解numpy中多维数组中的轴之间的差异。你能解释一下吗?我特别想知道numpy三维数组中的axis0,axis1和axis2在哪里。又为什么呢?谢谢。
给出以下命令:
np.ones((2,2,3))
Run Code Online (Sandbox Code Playgroud)
我得到以下
array([[[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.]]])
Run Code Online (Sandbox Code Playgroud)
根据我阅读文档/博客等的理解,这是一个多维数组,它实际上是 3 个 2x2 矩阵的组合,因此我们有 2 列 2 行和 3 的“深度”维度,这意味着 numpy 使用 (row,column,depth ) 系统用于 3 维数组。
那么我应该如何解释终端中显示的内容,它似乎是 2 个 3x2 矩阵,暗示一个(深度,行,列)系统。