小编典典

为什么用括号和逗号索引numpy数组的行为不同?

python

我倾向于用括号为numpy数组(矩阵)建立索引,但是当我想对数组(矩阵)进行切片时,我注意到我必须使用逗号表示法。为什么是这样?例如,

>>> x = numpy.array([[1, 2], [3, 4], [5, 6]])
>>> x
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> x[1][1]
4                 # expected behavior
>>> x[1,1]
4                 # expected behavior
>>> x[:][1]
array([3, 4])     # huh?
>>> x[:,1]
array([2, 4, 6])  # expected behavior

阅读 190

收藏
2020-12-20

共1个答案

小编典典

这个:

x[:, 1]

表示“x沿第一个轴获取所有索引,但沿第二个轴仅获取索引1”。

这个:

x[:][1]

意思是“x沿第一个轴获取所有索引(所以的全部x),然后沿结果的 第一个 轴获取索引1 ”。您将应用于1错误的轴。

x[1][2]并且x[1, 2]仅是等效的,因为使用整数对数组进行索引会将所有其余轴移向形状的前面,因此的第一个轴x[1]是的第二个轴x。这一点根本没有概括。您应该几乎总是使用逗号而不是多个索引步骤。

2020-12-20