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

在Python NumPy中,什么是维度和轴?,python,numpy,Python,Numpy,我正在使用PythonsNumPy模块进行编码。如果一个点在三维空间中的坐标被描述为[1,2,1],那不是三维的,三轴的,三阶的吗?或者,如果这是一个维度,那么它不应该是点(复数),而不是点吗 以下是文件: 在Numpy中,尺寸称为轴。轴的数量为秩。 例如,三维空间[1,2,1]中一个点的坐标是秩1的数组,因为它有一个轴。该轴的长度为 三, 来源:这是排名第一的,因为你需要一个索引来索引它。一个轴的长度为3,作为索引,它可以取三个不同的值:v[i],i=0..2在numpy数组中,维度是指索引它

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

以下是文件:

在Numpy中,尺寸称为轴。轴的数量为秩。 例如,三维空间[1,2,1]中一个点的坐标是秩1的数组,因为它有一个轴。该轴的长度为 三,


来源:

这是排名第一的,因为你需要一个索引来索引它。一个轴的长度为3,作为索引,它可以取三个不同的值:
v[i],i=0..2
在numpy
数组中,维度是指索引它所需的
轴的数量,而不是任何几何空间的维度。例如,可以使用二维阵列描述点在三维空间中的位置:

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

您可以对此进行操作,并查看数组的维数和形状,如下所示:

[262]中的
:a=np.arange(9)
在[263]中:a
Out[263]:数组([0,1,2,3,4,5,6,7,8])
在[264]中:a.ndim#维数
Out[264]:1
In[265]:a.形状
出[265]:(9,)
[266]中:b=np.数组([[0,0,0],[1,2,3],[2,2,2],[9,9,9])
In[267]:b
出[267]:
数组([[0,0,0],
[1, 2, 3],
[2, 2, 2],
[9, 9, 9]])
In[268]:b.ndim
Out[268]:2
In[269]:b.形状
出[269]:(4,3)
阵列可以有许多维度,但它们很难在两个或三个维度以上可视化:

[276]中的
:c=np.random.rand(2,2,3,4)
In[277]:c
出[277]:
阵列([[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.形状
出[279]:(2,2,3,4)

只需粘贴以下部分答案:

在Numpy中,维度形状是相关的,有时是类似的概念:

In [1]: import numpy as np

In [2]: a = np.array([[1,2],[3,4]])
维 在数学/物理学中,维度或维度被非正式地定义为指定空间内任何点所需的最小坐标数。但在Numpy中,根据,它与轴/轴相同:

在Numpy中,尺寸称为轴。轴的数量为秩

轴/轴 以Numpy为
数组
编制索引的第n个坐标。多维数组的每个轴可以有一个索引

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
您还可以在组操作中使用axis参数,如果axis=0,Numpy对每列的元素执行操作,如果axis=1,则对行执行操作

test = np.arange(0,9).reshape(3,3)

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

test.sum(axis=0)
Out[5]: array([ 9, 12, 15])

test.sum(axis=1)
Out[6]: array([ 3, 12, 21])

这就是我的理解。 点是一维对象。您只能定义其位置。它没有维度。 线或曲面是二维对象。您可以分别通过其位置和长度或面积来定义它,例如矩形、正方形、圆形 体积是一个三维对象。您可以通过其位置、表面积/长度和体积来定义它,例如球体、立方体

在此基础上,您将通过单个轴(标注)在NumPy中定义一个点,而不考虑使用的数学轴的数量。对于x和y轴,点定义为[2,4],对于x、y和z轴,点定义为[2,4,6]。这两个都是点,因此是1D

要定义直线,需要两个点。这需要将点以某种形式“嵌套”到第二维度(2D)。因此,可以仅使用x和y作为[[2,4],[6,9]]或使用x、y和z作为[[2,4,6],[6,9,12]]来定义直线。 对于曲面,它只需要更多的点来描述它,但仍然是二维对象。例如,三角形需要3个点,而矩形/正方形需要4个点


一个体积将需要4个(四面体)或更多点来定义它,但仍然保持点到三维(3D)的“嵌套”。

如果有人需要此视觉描述:

test = np.arange(0,9).reshape(3,3)

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

test.sum(axis=0)
Out[5]: array([ 9, 12, 15])

test.sum(axis=1)
Out[6]: array([ 3, 12, 21])