numpy数组切片未预期的结果

Jam*_*mes 1 python numpy

我不明白下面的行为.numpy数组通常可以通过索引来访问,所以[:,1]应该等同于[:] [1],或者我认为.有人可以解释为什么不是这样吗?

>>> a = np.array([[1, 2, 3], [4, 5, 6]])  
>>> a[:,1]  
array([2, 5])  
>>> a[:][1]  
array([4, 5, 6])
Run Code Online (Sandbox Code Playgroud)

谢谢!

Bre*_*arn 5

这两种形式的索引不一样.你应该使用[i, j]而不是[i][j].即使两者都工作,第一个会更快(见这个问题).

使用两个索引[i][j]是两个操作.它执行第一个索引,然后在第一个操作的结果上执行第二个索引. [:]只返回整个数组,所以你的第一个相当于array[1].由于只传递了一个索引,因此假定它引用第一个维度(行),因此这意味着"获取行1".使用一个复合索引[i, j]是一次使用两个索引条件的单个操作,因此array[:, 1]返回"所有行,列1".