我正在阅读 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。
在 中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)