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

2024-05-15 05:39:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Ndarray来理解这段代码会发生什么:

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

其中evecs为ndarray类型。到目前为止,我知道“:”是一个切片运算符,“…”是一个所谓的椭圆。到目前为止,“:”表示所有元素,“…”表示所需的任意多个元素。我用形状研究了阵列:

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

我可以想象,它试图将一个3D数组转换成一个三元组数组(x,y,z)。但我不确定。你知道吗

对于那些关心的人:它来自dipy软件包:functionquantize_evecsinsidehttps://github.com/nipy/dipy/blob/ff75b192f694cdb62cc11310159cdb652ce62073/dipy/reconst/dti.py行,大约1663年


Tags: 代码元素类型切片运算符数组max椭圆
1条回答
网友
1楼 · 发布于 2024-05-15 05:39:09

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

Ellipsis expand to the number of : objects needed to make a selection tuple of the same length as x.ndim. Only the first ellipsis is expanded, any others are interpreted as :.

因此,在您的示例中,evecsndim等于4,下面是等价的:

evecs[..., :, 0]
evecs[:, :, :, 0]

它也有助于尝试互动的东西,以获得一种感觉。对于一些简单的数据,例如a = np.random.rand(3, 3, 2),试着打印出a和它的各个部分,如a[..., 0]a[1, ...]以及类似的内容,看看它们之间的关系。你知道吗

相关问题 更多 >

    热门问题