在Python NumPy什么是维度和轴?

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

这里是文档:

在Num尺寸被称为轴。 轴的数量是等级。 例如,三维空间中一个点的坐标[1,2,1]是一个等级为1的数组,因为它具有一个坐标轴。 那个轴的长度是3。

资料来源: http : //wiki.scipy.org/Tentative_NumPy_Tutorial

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

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

shape(4, 3) ,维数为2 。 但它可以描述三维空间,因为每行( axis 1)的长度是三个,所以每行可以是一个点的位置的x,y和z分量。 axis 0的长度表示点的数量(这里是4)。 但是,这更像是代码描述的math应用,而不是数组本身的属性。 在math中,vector的维数将是其长度(例如,3dvector的x,y和z分量),但是在math上,任何“vector”实际上都被认为是长度不等的一维数组。 该数组并不在乎所描述的空间的维度(如果有的话)。

你可以玩这个,并看到像这样的数组的尺寸和形状的数量:

 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) 

它是一级的,因为你需要一个索引来索引它。 一个轴的长度为3,作为索引索引,它可以取三个不同的值: v[i], i=0..2

只需粘贴这个答案的一部分答案 :

在Numpy中, 尺寸轴/轴形状是相关的,有时也是类似的概念:

 In [1]: import numpy as np In [2]: a = np.array([[1,2],[3,4]]) 

尺寸

math/物理中 ,维或维被非正式地定义为指定空间内的任何点所需的最小坐标数。 但在Numpy中 ,根据numpy文档 ,它和axis / axes是一样的:

在Num尺寸被称为轴。 轴的数量是等级。

 In [3]: a.ndim # num of dimensions/axes, *Mathematics definition of dimension* Out[3]: 2 

轴/轴

在Numpy中索引array第n个坐标。 multidimensional array每个轴可以有一个索引。

 In [4]: a[1,0] # to index `a`, we specific 1 at the first axis and 0 at the second axis. Out[4]: 3 # which results in 3 (locate at the row 1 and column 0, 0-based index) 

形状

描述每个可用轴有多less数据。

 In [5]: a.shape Out[5]: (2, 2) # both the first and second axis have 2 (columns/rows/pages/blocks/...) data