我尝试使用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
函数
答案 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)
及其各种切片,如a
和a[..., 0]
等,并查看它们之间的关系。