嗨,我在学习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]有什么区别
您可以将第一个
a[:][:][0]
视为对__getitem__
的多个链接调用。这意味着a[:][:][0]
大致相当于:其中
d
是结果。在您的例子中,它返回与a[0]
相同的内容,因为a[:] == a
相反,
a[:,:,0]
只调用一次带有参数slice(None), slice(None), 0
的__getitem__
在你的例子中,这是第三轴上张量的第一个切片
相关问题 更多 >
编程相关推荐