关于numpy数组维数的问题

Question about dimensionality of numpy array

我正在同时学习物理和numpy。 Numpy 说我的 3x3 矩阵有 2 维,但在我的物理书或 3blue1brown 'Essence of linear Algebra' 中 3x3 矩阵是 3-D

#a '2d' array, created using identity
i2d = np.identity(3)  

print(i2d)

print('this is a %s-D array, shape is %s with %s elements'%(i2d.ndim, i2d.shape, i2d.size))


YIELDS:

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
this is a 2-D array, shape is (3, 3) with 9 elements

在线性代数中,这定义了具有 3 个垂直基向量的 3-D space。任何人都知道我错过了什么。

在 numpy 中,shape 属性为您提供 (3,3) 并表示行数和列数 - 在物理环境中,长度为 3 的 3 个基向量构成了 3D-space.

Numpy 的 ndim 数组属性引用了数组的“嵌套”数量。你有一个 数组数组 - 所以你有两个维度。

一般来说,如果数组的元素本身就是数组,那么你的维度就是 2。要像这样访问数组中的任何元素,你需要 2 个索引,每个索引一个。即 arr[i][j]

如果一个数组的元素是数组,并且这些数组的元素也是数组,那么你的维度是 3,你需要 3 个索引来访问任何元素,即 arr[i][j][k]。你有一个像这样的嵌套数组结构:

[
  [ 
    [ 1, 2, 3 ],
    [ 4, 5, 6 ],
    [ 7, 8, 9 ]
  ],
  [ 
    [ 1, 0, 0 ],
    [ 0, 1, 0 ],
    [ 0, 0, 1 ]
  ],
  ...
]

物理意义上的shape属性应该是你所关注的

为3-space的基础,3x3矩阵。对于4-space、4x4矩阵等的基础