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