有人可以解释 numpy 如何显示多维数组吗?

sea*_*ull 3 python arrays numpy

给出以下命令:

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 矩阵,暗示一个(深度,行,列)系统。

小智 7

与 Matlab(列优先)不同,NumPy 使用优先索引:分组从最左边的索引开始。因此,ones((2, 3, 4))由两个数组组成ones((3, 4)),每个数组由三个数组组成ones((4,))

从左到右是外到内。此外,它是缓慢变化的索引 - 到 - 快速变化的索引(如果按顺序读取所有元素)。

>>> np.ones((2, 3, 4))
array([[[ 1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.]],

       [[ 1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.],
        [ 1.,  1.,  1.,  1.]]])
Run Code Online (Sandbox Code Playgroud)

对于二维数组,它是行列。对于 3D,它是深度-行-列,等等:对于 4D,它是某物-某物-行-列。