在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