一、这里的arr[:]和arr[...]可以认为是一样的。但是省略号(Ellipsis)... 在numpy里的indexing表示一个或多个冒号( :) 号。文档里这样说:Ellipsis expand to the number of : objects needed to make a selection tuple of the same length as x.ndim. There may only be a single ellipsis present.
这个省略号语法上比写多个冒号方便。关于Ellipsis,需要关心的问题可能是返回结果到底是copy还是view:实际上在numpy里,basic indexing总是返回view:All arrays generated by basic slicing are always views of the original array.
而advanced indexing总是返回一个copy:Advanced indexing always returns a copy of the data.
而单独的[...]是basic indexing的方法之一。
当然,混合basic和advanced的indexing也可以,至于具体细节,可以参考 Indexing - NumPy v1.12 Manual。
二、arr[:,i,j] 与arr[:][i][j]是不一样的。
arr[:][i][j]其实是:
tmp = arr[:]
tmp = tmp[i]
tmp[j]
由于tmp=arr[:] 什么都没做,所以其实arr[:][i][j]等价的是 arr[i,j,:],而不是arr[:,i,j]。