这个切片和椭圆索引操作会产生什么结果?

时间:2013-12-12 10:26:44

标签: python arrays numpy indexing operators

我尝试使用ndarrays了解此代码会发生什么:

max_evecs = evecs[..., :, 0]

其中evecs的类型为ndarray。到目前为止,我知道':'是一个切片运算符,'...'是一个所谓的椭圆。到目前为止':'表示所有元素,'...'表示所需数量。我研究了具有形状的阵列:

>>> max_evecs.shape
(128, 128, 72)
>>> evecs.shape
(128, 128, 72, 3)

我可以想象,尝试将3D数组转换为三元组(x,y,z)。但我不确定。

对于那些关心的人:来自dipy软件包:1663年左右https://github.com/nipy/dipy/blob/ff75b192f694cdb62cc11310159cdb652ce62073/dipy/reconst/dti.py行内的quantize_evecs函数

1 个答案:

答案 0 :(得分:4)

来自http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

  

省略号扩展为:进行选择所需的对象数量   与x.ndim长度相同的元组。只有第一个省略号   扩展,其他任何解释为:。

因此,在您的示例中,evecs的{​​{1}}等于4,以下内容相同:

ndim

以交互方式尝试以获得感觉也很有帮助。对于一些简单的数据,例如evecs[..., :, 0] evecs[:, :, :, 0] ,请尝试打印a = np.random.rand(3, 3, 2)及其各种切片,如aa[..., 0]等,并查看它们之间的关系。