numpy高级索引功能还是bug?

时间:2015-08-02 09:18:30

标签: python numpy indexing

numpy高级索引异常。我在为CS 190.1X工作时遇到了这个问题。花了一段时间让我掌握尺寸。

>>> a = np.ndarray([3,3],int)
>>> a[:,1]
array([-1,0,0])
>>> a[:,[1]]
array([[-1],[0],[0]])

这是一个功能还是一个bug? :)

1 个答案:

答案 0 :(得分:2)

a[:, 1]basic slicing and indexing的一个例子。

a[:, [1]]combining advanced and basic indexing的一个例子。 :是一个基本切片,但[1]触发推进整数索引。

由于高级索引彼此相邻,the rules用于组合高级索引和基本索引,所以

  

高级索引操作的维度被插入到结果数组中与初始数组中相同的位置(后一种逻辑使简单的高级索引行为就像切片一样)。

因此,整数索引[1],其形状为数组(1,),会导致插入相同形状的额外维度 在结果中。

In [12]: a = np.arange(9).reshape(3,3)

In [13]: a[:,1].shape
Out[13]: (3,)

In [14]: a[:,[1]].shape
Out[14]: (3, 1)

In [15]: a[:,[1,2]].shape
Out[15]: (3, 2)

In [16]: a[:,[[1,2],[0,1]]].shape
Out[16]: (3, 2, 2)