关于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矩阵等的基础
我正在同时学习物理和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矩阵等的基础