【问题标题】:Question about dimensionality of numpy array关于numpy数组维数的问题
【发布时间】:2021-03-22 01:15:54
【问题描述】:

我正在同时学习物理和 numpy。 Numpy 说我的 3x3 矩阵有 2 维,但在我的物理书或 3blue1brown“线性代数的本质”中,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 空间。任何人都知道我错过了什么。

【问题讨论】:

  • 一个矩阵可以表示n维空间中任意n的线性变换,或从n维空间中抽取的一组数据点,但矩阵本身的维数是另一回事。

标签: python arrays numpy numpy-ndarray


【解决方案1】:

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

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 空间、3x3 矩阵的基础。对于 4 空间、4x4 矩阵等的基础。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2020-05-18
    相关资源
    最近更新 更多