python – 为什么用括号和逗号对索引的numpy数组的行为有所不同?

我倾向于使用括号来索引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

解决方法:

这个:

x[:, 1]

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

这个:

x[:][1]

表示“沿第一个轴取x的所有索引(所以x全部为x),然后沿结果的第一个轴取索引1”.您将1应用于错误的轴.

x [1] [2]和x [1,2]只是等价的,因为用整数索引数组会将所有剩余的轴移向形状的前面,因此x [1]的第一个轴是x的第二个轴.这根本没有概括;你应该几乎总是使用逗号而不是多个索引步骤.

上一篇:如何在JavaScript中创建一个索引从1开始的数组?


下一篇:【4Large-Style】前端框架设计——Button 的设计思路