a[:,:,0]和a[:][:][0]之间的差异

2024-05-16 02:34:01 发布

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

嗨,我在学习python切片,我发现了一些奇怪的东西,我不明白

import torch

a = torch.tensor([
    [
        [1, 2, 3],
        [4, 5, 6]
    ],
    [
        [7, 2, 3],
        [8, 5, 6]
    ]
])
>>> a[:][:][0]
tensor([[1, 2, 3],
        [4, 5, 6]])

>>> a[:,:,0]
tensor([[1, 4],
        [7, 8]])

我试图从相应的火炬列表中拉出[[1,4,7,8]],所以我输入了一个[:][:][0],结果是[[1,2,3],[4,5,6].
然后,当我输入一个[:,:,0]时,出现了[[1,4,7,8].
我认为他们没有什么不同,但出现了不同的结果。
火炬手和numpy操作员,有一个类似于[:,0]的操作。它与[:][0]有什么区别


Tags: importnumpy列表切片torch火炬手火炬tensor
1条回答
网友
1楼 · 发布于 2024-05-16 02:34:01

您可以将第一个a[:][:][0]视为对__getitem__的多个链接调用。这意味着a[:][:][0]大致相当于:

b = a[:]
c = b[:]
d = c[0]

其中d是结果。在您的例子中,它返回与a[0]相同的内容,因为a[:] == a

相反,a[:,:,0]只调用一次带有参数slice(None), slice(None), 0__getitem__

在你的例子中,这是第三轴上张量的第一个切片

相关问题 更多 >