理解 NumPy 中的轴

fla*_*ark 1 python numpy

我正在阅读 NumPy文档,但无法理解一点。它提到,对于下面的示例,数组的秩为 2(它是二维的)。第一个维度(轴)的长度为 2,第二个维度的长度为 3。

 [[ 1., 0., 0.],
 [ 0., 1., 2.]]
Run Code Online (Sandbox Code Playgroud)

第一个维度(轴)的长度如何为 2?

编辑: 我困惑的原因是文档中的以下声明。

3D 空间 [1, 2, 1] 中一个点的坐标是一个秩为 1 的数组,因为它有一个轴。该轴的长度为 3。

在原始的 2D ndarray 中,我假设列表的数量标识了等级/维度,并且我错误地假设每个列表的长度表示每个维度的长度(按此顺序)。所以,根据我的理解,第一个维度的长度应该是 3,因为第一个列表的长度是 3。

Fab*_*enP 5

在 中numpy,轴顺序遵循zyx约定,而不是通常的(也许更直观)xyz

从视觉上看,这意味着对于水平轴为x,垂直轴为 的二维数组y

    x -->
y      0   1   2
|  0 [[1., 0., 0.],
V  1  [0., 1., 2.]]
Run Code Online (Sandbox Code Playgroud)

shape此数组的是(2, 3),因为它是有序的(y, x),与第一轴线y长度的2

并通过切片验证这一点:

import numpy as np

a = np.array([[1, 0, 0], [0, 1, 2]], dtype=np.float)

>>> a
Out[]:
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  2.]])

>>> a[0, :]                    # Slice index 0 of first axis
Out[]: array([ 1.,  0.,  0.])  # Get values along second axis `x` of length 3

>>> a[:, 2]                    # Slice index 2 of second axis
Out[]: array([ 0.,  2.])       # Get values along first axis `y` of length 2
Run Code Online (Sandbox Code Playgroud)