numpy高级索引异常。我在为CS 190.1X工作时遇到了这个问题。花了一段时间让我掌握尺寸。
>>> a = np.ndarray([3,3],int)
>>> a[:,1]
array([-1,0,0])
>>> a[:,[1]]
array([[-1],[0],[0]])
这是一个功能还是一个bug? :)
答案 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)