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 [3]: a.ndim # num of dimensions/axes, *Mathematics definition of dimension*
Out[3]: 2
轴
在Numpy中索引array的 nth 坐标。多维数组的每个轴可以有一个索引。
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)
形状
描述沿着每个可用轴的数据数量。
In [5]: a.shape
Out[5]: (2, 2) # both the first and second axis have 2 (columns/rows/pages/blocks/...) data
7条答案
按热度按时间gt0wga4j1#
在numpy
array
s中,维数是指索引axes
所需的axes
的数目,而不是任何几何空间的维数。例如,您可以使用2D数组来描述3D空间中的点的位置:它有
(4, 3)
的shape
和2
的维数。但它可以描述三维空间,因为每行的长度(axis
1)为3,因此每行可以是点位置的x、y和z分量。axis
0的长度表示点数(这里是4)。然而,这更多的是对代码所描述的数学的应用,而不是数组本身的属性。在数学中,向量的维数是它的长度(例如,三维向量的x、y和z分量),但在numpy中,任何“向量”实际上都只是被认为是长度可变的一维数组,数组并不关心所描述的空间(如果有的话)的维数是多少。你可以试试看,看看数组的维数和形状,如下所示:
数组可以有许多维度,但如果超过两个或三个维度,就很难可视化:
nhn9ugyo2#
如果有人需要这种视觉描述:
rpppsulh3#
只需粘贴此answer的部分答案:
在Numpy中,尺寸、轴、形状是相关的,有时是相似的概念:
尺寸
在 Mathematics/Physics 中,dimension或dimensionality被非正式地定义为指定空间中任意点所需的最小坐标数,但在 Numpy 中,根据Numpy文档,它与axis/axis是一样的:
在Numpy中,维被称为轴,轴的数目是秩。
轴
在Numpy中索引
array
的 nth 坐标。多维数组的每个轴可以有一个索引。形状
描述沿着每个可用轴的数据数量。
0wi1tuuw4#
它的等级为1,因为您需要一个索引来索引它。该轴的长度为3,作为索引,它可以取三个不同的值:
v[i], i=0..2
.ua4mk5z45#
您也可以在群组操作中使用 axis 参数,如果axis=0,Numpy会对每一栏的元素执行动作,如果axis=1,则会对列执行动作。
y1aodyip6#
这就是我对它的理解。一个点是一个1D对象。你只能定义它的位置。它没有维度。一条线或一个面是一个2D对象。你可以分别通过它的位置和长度或面积来定义它,例如矩形、正方形、圆形。一个体积是一个3D对象。你可以通过它的位置、表面积/长度和体积来定义它,例如球体、立方体。
由此,您将通过单个轴(维度)在NumPy中定义一个点,而不管您使用的数学轴的数量。对于x和y轴,一个点定义为[2,4],对于x、y和z轴,一个点定义为[2,4,6]。这两个轴都是点,因此是1D。
要定义一条线,需要两个点。这需要将点“嵌套”到第二维中因此,可以仅使用x和y作为[[2,4],[6,9]]或者使用x、y和z作为[[2,4,6],[6,9,12]]来定义线。对于表面,将简单地需要更多的点来描述它,但仍然是2D对象。例如,三角形需要3个点,而矩形/正方形需要4个点。
一个体积需要4个(四面体)或更多的点来定义它,但仍然保持点到第三维(3D)的“嵌套”。
kadbb4597#
为了理解维度和轴,理解Tensor及其秩是很重要的。向量是秩为1的Tensor,矩阵是秩为2的Tensor,依此类推。考虑以下内容:
现在x是一个向量,因此是秩-1Tensor。但是向量本身是5维的。在numpy rank=dimension=axis中。与传统的维数定义略有偏差,对于上面所示的向量,维数是5。因此,最好坚持使用秩或轴,并使用传统意义上的维数。