明确权威的numpy轴数解释?

Ale*_*yan 5 python numpy

我对这个术语轴在numpy中的含义以及这些结构如何编号的矛盾解释感到困惑.

这是一个解释:
轴是为具有多个维度的数组定义的.
二维阵列具有两个相应的轴:
第一个在行(轴0)上垂直向下运行,
第二个轴在列(轴1)上水平运行.

所以,在这个3x4矩阵中......

>>> b = np.arange(12).reshape(3,4)
>>> b
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
Run Code Online (Sandbox Code Playgroud)

(轴0)是3行
(轴1)是4列

所以规则可能是......

在M×N矩阵中,(轴0)是M,(轴1)是N.

它是否正确?

因此,在3维矩阵中,AxBxC(轴0)是A
(轴1),B
(轴2)是C.

它是否正确?

ali*_*i_m 5

你所说的一切都是正确的,除了

轴是为具有多个维度的数组定义的.

轴也被定义为一维数组 - 只有一个(即轴0).


考虑轴的一种直观方式是考虑在一个轴上应用缩减操作时会发生什么,例如求和.例如,假设我有一些数组x:

x = np.arange(60).reshape(3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

如果我计算x.sum(0)x在第一个维度(即轴0)上"折叠" ,那么我最终得到一个(4, 5)数组.同样,x.sum(1)给我一个(3, 5)数组并x.sum(2)给我一个(3, 4)数组.

单轴的整数索引x也会给我一个少一轴的输出.例如,x[0, :, :]给我第一个"行" x,它有形状(4, 5),x[:, 0, :]给我第一个带有形状的"列" (3, 5),并x[:, :, 0]给我第一个x带有形状的第三个切片(3, 4).