在 Python NumPy 中什么是维度和轴?

新手上路,请多包涵

我正在使用 Pythons NumPy 模块进行编码。如果 3D 空间中的一个点的坐标被描述为 [1, 2, 1] ,那不就是三个维度、三个轴、三个等级吗?或者如果那是一维那么它不应该是点(复数),而不是点吗?

这是文档:

在 Numpy 中维度被称为轴。轴的数量是等级。例如,3D 空间中的一个点的坐标 [1, 2, 1] 是一个秩为 1 的数组,因为它只有一个轴。该轴的长度为 3。

资料来源: 链接

原文由 davidjhp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 248
2 个回答

在 numpy array s 中,维数是指索引它所需的 axes 的数量,而不是任何几何空间的维数。例如,您可以使用 2D 数组描述 3D 空间中点的位置:

 array([[0, 0, 0],
       [1, 2, 3],
       [2, 2, 2],
       [9, 9, 9]])

其中有 shape(4, 3) 和维度 2 。但它可以描述 3D 空间,因为每一行的长度 ( axis 1) 是三,所以每一行可以是一个点位置的 x、y 和 z 分量。 axis 的长度0表示点数(这里是4)。但是,这更多是对代码所描述的数学的应用,而不是数组本身的属性。在数学中,向量的维度是它的长度(例如,3d 向量的 x、y 和 z 分量),但在 numpy 中,任何“向量”实际上都被视为长度可变的一维数组。该数组不关心所描述的空间(如果有)的维度是多少。

您可以尝试一下,并查看数组的维数和形状,如下所示:

 In [262]: a = np.arange(9)

In [263]: a
Out[263]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])

In [264]: a.ndim    # number of dimensions
Out[264]: 1

In [265]: a.shape
Out[265]: (9,)

In [266]: b = np.array([[0,0,0],[1,2,3],[2,2,2],[9,9,9]])

In [267]: b
Out[267]:
array([[0, 0, 0],
       [1, 2, 3],
       [2, 2, 2],
       [9, 9, 9]])

In [268]: b.ndim
Out[268]: 2

In [269]: b.shape
Out[269]: (4, 3)

数组可以有很多维度,但超过两维或三维就很难形象化了:

 In [276]: c = np.random.rand(2,2,3,4)

In [277]: c
Out[277]:
array([[[[ 0.33018579,  0.98074944,  0.25744133,  0.62154557],
         [ 0.70959511,  0.01784769,  0.01955593,  0.30062579],
         [ 0.83634557,  0.94636324,  0.88823617,  0.8997527 ]],

        [[ 0.4020885 ,  0.94229555,  0.309992  ,  0.7237458 ],
         [ 0.45036185,  0.51943908,  0.23432001,  0.05226692],
         [ 0.03170345,  0.91317231,  0.11720796,  0.31895275]]],

       [[[ 0.47801989,  0.02922993,  0.12118226,  0.94488471],
         [ 0.65439109,  0.77199972,  0.67024853,  0.27761443],
         [ 0.31602327,  0.42678546,  0.98878701,  0.46164756]],

        [[ 0.31585844,  0.80167337,  0.17401188,  0.61161196],
         [ 0.74908902,  0.45300247,  0.68023488,  0.79672751],
         [ 0.23597218,  0.78416727,  0.56036792,  0.55973686]]]])

In [278]: c.ndim
Out[278]: 4

In [279]: c.shape
Out[279]: (2, 2, 3, 4)

原文由 askewchan 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果有人需要这个视觉描述:

numpy 轴 0 和轴 1

原文由 debaonline4u 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题